home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 1995 #2 / Amiga Plus CD - 1995 - No. 2.iso / internet / faq / englisch / comp.os.research < prev    next >
Encoding:
Text File  |  1995-04-11  |  106.4 KB  |  2,485 lines

  1. Archive-name: os-research/part1
  2. Version: $Revision: 1.18 $
  3. Last-Modified: $Date: 1995/02/03 14:32:12 $
  4.  
  5.         Answers to frequently asked questions
  6.           for comp.os.research: part 1 of 3
  7.  
  8.                Copyright (C) 1993--1995
  9.                Bryan O'Sullivan
  10.  
  11.  
  12.  
  13.               TABLE OF CONTENTS
  14.  
  15.  
  16. 1.     Introduction
  17. 1.1.   How to read this article
  18. 1.2.   Reader contributions and comments
  19. 1.3.   Acknowledgments and caveats
  20.  
  21. 2.     Recurrent discussions
  22. 2.1.   Microkernels, macrokernels, and the in-betweenies
  23. 2.2.   Threads
  24. 2.2.1. Distinguishing features
  25. 2.2.2. Characterising implementations of multithreading
  26. 2.2.3. The history of threads
  27.  
  28. 3.     File systems
  29. 3.1.   Extent-based versus log-structured file systems
  30.  
  31. 4.     Mobile and disconnected computing
  32. 4.1.   Constraints on software
  33. 4.2.   Communications protocols
  34. 4.3.   Access to files
  35. 4.4.   Power management
  36. 4.5.   Other issues
  37. 4.6.   An introductory mobile computing bibliography
  38.  
  39. 5.     Operating systems teaching
  40. 5.1.   What good undergraduate-level texts are available?
  41. 5.2.   Graduate-level texts
  42. 5.3.   Do any texts cover the implementation of specific operating systems?
  43. 5.4.   What instructional operating systems can I use?
  44. 5.5.   Where can I find the canonical list of OS papers for grad courses?
  45.  
  46.  
  47.  
  48. ------------------------------
  49. Subject: [1] Introduction
  50. From: Introduction
  51.  
  52. This posting consists of answers to many of the questions most
  53. frequently asked and summaries of the topics most frequently covered
  54. on comp.os.research, the Usenet operating systems research discussion
  55. group.  The purpose of this posting is to circulate existing
  56. information, and to avoid rehashing old topics of discussion and
  57. questions.  Please read both parts of this document before posting to
  58. this newsgroup.
  59.  
  60. This newsgroup is moderated; the moderator is Darrell Long
  61. <darrell@cse.ucsc.edu>.  A companion posting to the FAQs, `Welcome to
  62. comp.os.research', briefly covers the moderation policy and guidelines
  63. for posting to comp.os.research.  It can be found in either
  64. comp.os.research or news.answers, and is posted regularly.
  65.  
  66. Due to its size, the FAQ is split up into three parts; each is posted
  67. once a month.  The welcome posting is posted fortnightly.  The FAQ is
  68. also available in hypertext form on the World-Wide Web, at
  69. http://www.maths.tcd.ie/scrg/os-faq.html.  You may prefer to browse
  70. the FAQ on the Web rather than on Usenet, as it contains many useful
  71. hyperlinks.
  72.  
  73. Note: chunks of text of the form [92-02-12-21-20.29] indicate the
  74. original posting from which a section of this article was inspired,
  75. snarfed, or just plain copied wholesale.  The FAQ as available on the
  76. Web has hyperlinks to the relevant articles.  Other chunks in square
  77. brackets are comments and reminders to myself.  These latter sections
  78. of text will be removed as appropriate material is added, but the
  79. attributions will remain.
  80.  
  81. ------------------------------
  82. Subject: [1.1] How to read this article
  83. From: Introduction
  84.  
  85. This article is posted in digest format; using the `G%' command from
  86. within the `nn' newsreader should split it up into separate
  87. sub-articles which you can browse through.
  88.  
  89. To skip to a particular question numbered n.m, use `/: \[n\.m\]' from
  90. most pagers.  From within GNU Emacs, you can use `C-s [n.m]'.  This
  91. article is treated as an outline when edited by GNU Emacs.
  92.  
  93. ------------------------------
  94. Subject: [1.2] Reader contributions and comments
  95. From: Introduction
  96.  
  97. Your contributions, comments, and corrections are welcomed; mail sent
  98. to <os-faq@cse.ucsc.edu> will be dealt with as quickly as I can
  99. manage.  Generally, performing a reply or followup to this article
  100. from within your newsreader should do the Right Thing.
  101.  
  102. While I am more than happy to include submissions of material for the
  103. FAQ if they seem appropriate, it would make my life a lot easier if
  104. such text were proof-read in advance, and kept concise.  I don't have
  105. as much time as I would like to digest 15K text files and summarise
  106. them in three paragraphs for inclusion here.  If you are interested in
  107. contributing material, please see the to-do list at the end of part 3
  108. of the FAQ.
  109.  
  110. ------------------------------
  111. Subject: [1.3] Acknowledgments and caveats
  112. From: Introduction
  113.  
  114. Although this FAQ has been the result of a co-operative effort, any
  115. blame for inaccuracies and errors lies entirely with my edits.  I
  116. would like to thank the following people for their part in
  117. contributing to this article:
  118.  
  119. Arindam Banerji        <axb@cse.nd.edu>
  120. Surendar Chandra    <surendar@cs.duke.edu>
  121. Steve Chapin        <sjc@cs.purdue.edu>
  122. Crispin Cowan        <crispin@csd.uwo.ca>
  123. Dan Hildebrand        <danh@qnx.com>
  124. Gordon Irlam        <gordoni@home.base.com>
  125. Alan Judge        <amjudge@dsg.cs.tcd.ie>
  126. Darrell Long        <darrell@cse.ucsc.edu>
  127. Chris Maeda        <cmaeda@cs.washington.edu>
  128. Peter Magnusson        <psm@sics.se>
  129. Craig Partridge        <craig@bbn.com>
  130. Tom Van Vleck        <tom_van_vleck@taligent.com>
  131. Robert Walsh        <rjwalsh@maths.tcd.ie>
  132.  
  133. ------------------------------
  134. Subject: [2] Recurrent discussions
  135. From: Recurrent discussions
  136.  
  137. A number of topics tend to appear with regularity in comp.os.research.
  138. This section attempts to go over some of the most commonly-covered
  139. ground.  I haven't made the list of topics covered exhaustive by any
  140. means.
  141.  
  142. ------------------------------
  143. Subject: [2.1] Microkernels, macrokernels, and the in-betweenies
  144. From: Recurrent discussions
  145.  
  146. A recurrent topic of discussion in this newsgroup has been the
  147. comparison between microkernel (for example Mach and QNX) and
  148. `macrokernel' (traditional Unix) operating systems.  The basic notion
  149. of a microkernel consists of devolving as much functionality as
  150. possible into processes rather than the kernel itself; different
  151. systems take different approaches to implementing this.
  152.  
  153. For example, some systems (such as Mach) leave device drivers in the
  154. kernel, and place higher-level services (such as file systems)
  155. outside; others (such as QNX) move device drivers outside of the
  156. kernel.
  157.  
  158. However, anecdotal evidence [93-03-03-07-56.52] suggests that the
  159. distinction between microkernel and monolithic architectures is
  160. becoming more blurred as time goes on, as the two advance.  For
  161. example, most modern monolithic kernels now implement multiple threads
  162. of execution and fine-grained parallelism.  Architecturally, this
  163. approach begins to appear similar to a microkernel with several
  164. kernel-space processes working from shared memory.
  165.  
  166. As an aside, people often complain that the Mach system can't be a
  167. `real' microkernel, because it is so large (at least, this is the
  168. argument most frequently cited).  However, I have been told that
  169. automatically-generated code stubs contribute very significantly to
  170. the size of the kernel, and that some size reduction would be likely
  171. if MIG (the stub generator) produced better code.  [Can someone from
  172. CMU comment on this?]  As mentioned above, the leaving of device
  173. drivers in the kernel also contributes to Mach's size.
  174.  
  175. Debating microkernels versus monolithic kernels on the basis of kernel
  176. size misses the central, architectural point.  In the same way as the
  177. point of a RISC processor is not to minimise the instruction count,
  178. but rather to make a different tradeoff between what is implemented
  179. in the processor instruction set and what is implemented in other
  180. ways, the microkernel architectural issue is to determine which
  181. services are implemented in the microkernel, and which services are
  182. implemented external to that microkernel.  By making appropriate
  183. choices here, the goal is to enhance various OS attributes in a manner
  184. that might not be addressable with a monolithic kernel OS.  System
  185. attributes such as performance, flexibility, realtime, etc. are all
  186. variables which are taken into account.
  187.  
  188. Some history:
  189.  
  190. Ira Goldstein and Paul Dale were the coiners of the term `microkernel'
  191. back around 1989.
  192.  
  193. ------------------------------
  194. Subject: [2.2] Threads
  195. From: Recurrent discussions
  196.  
  197. The exact meaning of the term `thread' is not generally agreed upon.
  198. One of the more common usages denotes a `lightweight' process
  199. (sequential flow of control) which shares an address space and some
  200. other resources with others, and for which context switching time is
  201. lower than for `heavyweight' (i.e. kernel-supported) processes.
  202.  
  203. Throughout the following material, when we refer to `processes', this
  204. can be taken as meaning heavyweight processes.
  205.  
  206. ------------------------------
  207. Subject: [2.2.1] Distinguishing features
  208. From: Recurrent discussions
  209.  
  210. Some of the features which distinguish different approaches to
  211. threading are listed below:
  212.  
  213. - Number of *concurrent* flows of control: generally, threads may
  214.   potentially make use of multiple processors in order to allow
  215.   several to execute concurrently.  That is, the model usually takes
  216.   into consideration the possibility that there may be more than one
  217.   flow of control active at any time.
  218.  
  219. - Scheduling policy: a thread scheduler may be pre-emptive, in which
  220.   case a thread is put to sleep either when it waits upon some
  221.   resource or runs for the full duration of its time quantum, or
  222.   non-pre-emptive, in which case individual threads continue to run
  223.   until they relinquish the processor themselves (either through
  224.   waiting on a resource or calling the analogue of a sleep()
  225.   function).
  226.  
  227. Systems which are non-pre-emptive and may only ever have a single
  228. active flow of control (regardless of the number of processors
  229. available) are referred to as coroutine systems.  Coroutine
  230. programming requires quite a different approach from threads-based
  231. programming, as many of the synchronisation and resource-sharing
  232. problems which occur in threaded environments need never trouble the
  233. coroutines programmer.
  234.  
  235. ------------------------------
  236. Subject: [2.2.2] Characterising implementations of multithreading
  237. From: Recurrent discussions
  238.  
  239. An important distinction may be made between user-level threads and
  240. kernel-supported threads.  A user-level thread maintains all its state
  241. in user space.  A consequence of this is that no kernel resources need
  242. to be allocated per thread, and switching between threads can be done
  243. without changing address space.  A disadvantage is that user level
  244. threads cannot execute while the kernel is busy, for instance, with
  245. paging or I/O.  This would require some knowledge and participation on
  246. the part of the kernel.
  247.  
  248. It is possible to combine both methods, as is done in SunOS 5.x (aka
  249. Solaris 2.x).  Here, one or more light weight processes (LWPs)
  250. multitask one or more user-level threads, which in turn are
  251. implemented using user-space libraries.
  252.  
  253. Some issues which characterise thread implementations, and which
  254. determine the uses to which a threads package may be put, include:
  255.  
  256. - How much by way of kernel resources does a thread require?  This
  257.   will typically limit the number of threads that can be started by a
  258.   process.
  259.  
  260. - Under what circumstances will the entire process hang?  For
  261.   instance, if some thread gets a page fault, may another thread in
  262.   that process be dispatched?
  263.  
  264. - Does switching threads require a full system call (as on the SPARC),
  265.   or may context switches between threads be performed entirely at
  266.   user level?
  267.  
  268. - How are signals handled?  Can signals be masked individually per
  269.   thread?  Is there a `broadcast' signal?
  270.  
  271. - How are stacks handled?  Will the stacks shrink/grow dynamically on
  272.   a per thread basis?
  273.  
  274. Several systems today (QNX and Plan 9, for instance) take the stance
  275. that threads `fix the symptom, but not the problem'.  Rather than
  276. using threads because the OS context switch time is too slow, a better
  277. approach, according to the architects of these systems, is to fix the
  278. OS.  It's ironic, now that even PC-hosted desktop OSes provide
  279. MMU-protected multitasking, the fashionable programming model has
  280. become multiple threads running in a common address space, making
  281. debugging difficult, and also making it more difficult to generate
  282. reliable code.  With fast context switching, existing OS services like
  283. explicitly allocated shared memory between a team of cooperating
  284. processes can create a `threaded' environment, without opening the
  285. Pandora's box of problems that a fully shared memory space entails.
  286.  
  287. ------------------------------
  288. Subject: [2.2.3] The history of threads
  289. From: Recurrent discussions
  290.  
  291. [93-04-21-13-32.11] [92-01-27-17-05.54] The notion of a thread, as a
  292. sequential flow of control, dates back to 1965, at least, with the
  293. Berkeley Timesharing System.  Only they weren't called threads at that
  294. time, but processes [Dijkstra, 65].  Processes interacted through
  295. shared variables, semaphores, and similar means.  Max Smith did a
  296. prototype threads implementation on Multics around 1970; it used
  297. multiple stacks in a single heavyweight process to support background
  298. compilations.
  299.  
  300. Perhaps the most important progenitor of threads is the programming
  301. language PL/I, from about the 1965 time frame.  The language as
  302. defined by IBM provided a `CALL XXX (A, B) TASK;' construct, which
  303. forked a thread for XXX.  It is not clear whether any IBM compiler
  304. ever implemented this feature, but it was examined closely while
  305. Multics was being designed; it was decided that the TASK call as
  306. defined didn't map onto processes, since there was no protection
  307. between the threads of control.  So Multics took a different
  308. direction, and the TASK feature was removed from PL/I by IBM in any
  309. case, along with the ABNORMAL attribute and lots of other weird stuff.
  310.  
  311. Then came Unix, in the early 1970s.  The Unix notion of a `process'
  312. became a sequential thread of control *plus* a virtual address space
  313. (incidentally, the Unix notion of a process derived directly from the
  314. Multics process design [Saltzer, 66]).  So `processes', in the Unix
  315. sense, are quite heavyweight machines.  Since they cannot share memory
  316. (each has its own address space), they interact through pipes,
  317. signals, etc).  Shared memory (also a rather ponderous mechanism) was
  318. added much later.
  319.  
  320. After some time, Unix users started to miss the old processes that
  321. could share memory.  This led to the `invention' of threads: old-style
  322. processes that shared the address space of a single Unix process.
  323. They also were called `lightweight', by way of contrast with
  324. `heavyweight' Unix processes.  This distinction dates back to the very
  325. late 70s or early 80s, i.e. to the first `microkernels' (Thoth
  326. (precursor of the V-kernel and QNX), Amoeba, Chorus, the
  327. RIG-Accent-Mach family, etc).
  328.  
  329. On a side note, threads have been in continuous use in
  330. telecommunications applications for quite a long time.
  331.  
  332. See also:
  333.  
  334. [Cheriton, 79]
  335.   Cheriton, D. R., `Multi-process structuring and the Thoth operating
  336.     system', Ph.D. Thesis, University of Waterloo, 1979.
  337.  
  338. [Daley & Dennis, 68]
  339.   Daley, R. C., Dennis, J. B., `Virtual memory, processes, and
  340.     sharing in Multics', Comm, ACM 11, 306-312, May 1968.
  341.  
  342. [Dennis & van Horn, 66]
  343.   Dennis, J. B., van Horn, E. C., `Programming semantics for
  344.     multiprogrammed computations', MAC-TR-21, 1966.
  345.  
  346. [Dijkstra, 65]
  347.   Dijkstra, E. W., `Cooperating sequential processes', in `Programming
  348.     Languages', Genuys, F. (ed.), Academic Press, 1965.
  349.  
  350. [Saltzer, 66]
  351.   Saltzer, J. H., `Traffic control in a multiplexed computer system',
  352.     MAC-TR-30 (Sc.D. Thesis), July, 1966.
  353.  
  354.  
  355. ------------------------------
  356. Subject: [3] File systems
  357. From: File systems
  358.  
  359. This field is discussed both here and in the comp.arch.storage
  360. newsgroup.  This section needs fleshing out at the moment; it will
  361. grow over time (hopefully!).
  362.  
  363. ------------------------------
  364. Subject: [3.1] Extent-based versus log-structured file systems
  365. From: File systems
  366.  
  367. [92-11-18-10-57.53] [92-11-22-10-16.26] A general definition for a
  368. log-structured storage system might be the following: logging is an
  369. append-only storage semantics.  The unit of logging is the record.
  370. Write accesses append records to the end of the log.  A log record may
  371. become obsolete.  Useless records are compacted out of the log when
  372. possible.  Other write accesses are forbidden.
  373.  
  374. An extent-based file system is another candicate for better filesystem
  375. performance.  The approach used under QNX, for example, is to have
  376. files exist as an array of extents on disk, where each is extent is as
  377. many contiguous blocks as could be allocated at that location.  By
  378. using a bitmap for space allocation, files can also grow `in-place',
  379. if adjacent free space on disk exists.  This approach allows the unit
  380. of disk space allocation to remain 512 bytes, which is also the
  381. smallest unit of physical I/O.  The potential performance bottleneck
  382. of this approach does not happen because the filesystem code passes
  383. I/O requests to the disk drivers in units of extents, not 512 byte
  384. blocks.  The filesystem also heuristically modifies the size of the
  385. pre-read requests based on the historical access pattern to the
  386. file.  This approach provides the performance advantages of larger
  387. physical disk block sizes, without the wasted disk space that results
  388. from unused portions of large blocks, or the complexity of trying to
  389. allocate space from partially unused blocks.
  390.  
  391.  
  392. ------------------------------
  393. Subject: [4] Mobile and disconnected computing
  394. From: Mobile and disconnected computing
  395.  
  396. The subject of operating systems for mobile and
  397. frequently-disconnected computers has become a recurrent topic in this
  398. newsgroup.  This section attempts to give an overview of issues in
  399. this area.  [Text by Arindam Banerji.]
  400.  
  401. ------------------------------
  402. Subject: [4.1] Constraints on software
  403. From: Mobile and disconnected computing
  404.  
  405. System software for mobile computing is impeded by four distinct
  406. constraints:
  407.  
  408. - Compared to stationary computers, mobile computers will always be
  409.   resource poor [Satyanarayan, 93].  Although currently available PDAs
  410.   (Personal Digital Assistants) compare favourably with the
  411.   stand-alone workstations of a few years ago [Marsh, 93], they'll
  412.   most probably lag behind in compute capabilities, available power,
  413.   storage availability and communication bandwidth, for some time to
  414.   come.
  415.  
  416. - Mobility entails computation amid fluctuating resource availability
  417.   and constraints [Banerji, 93].  Communication bandwidth may be
  418.   available at discrete intervals, an available resource may suddenly
  419.   become unreachable or an otherwise in-expensive communication link
  420.   may be randomly replaced by an expensive alternate in transit.
  421.  
  422. - Security threats to both mobile computational elements as well as
  423.   the data accessed by them are greatly increased [Satyanarayan, 93].
  424.   Not only is it easier to lose, damage or be robbed of a carry-along
  425.   PDA, but it is often easier to tap into the data transferred (as is
  426.   well-known to much of the cellular communication industry).  Very
  427.   little work, except for that undertaken by the cellular
  428.   communication industry, has been done in the area of addressing the
  429.   specific security needs of mobile computing (as far as I know).
  430.  
  431. - User needs and their application requirements may not be the same as
  432.   those in stationary systems [Weiser, 91].  As mobile computers
  433.   become ubiquitous (this phrase coined by Mark Weiser), the number of
  434.   computer users will most probably increase exponentially.  Most or
  435.   many of these users will be far less computer literate than the
  436.   average computer user of today.  In addition, shopping, information
  437.   browsing and entertainment may be the typical use of such mobile
  438.   units, as opposed to traditional scientific computing, database
  439.   support or word processing.
  440.  
  441. - With the presence of PCMCIA slots in a PDA, it also becomes
  442.   necessary for an OS to be able to mount and dismount entire OS
  443.   subsystems on the fly [Hildebrand, 94].  Operating systems need to
  444.   be able to treat networking, filesystems, and other services as
  445.   facilities which may be loaded and unloaded on demand.
  446.   
  447. Based upon an amalgam of these criteria, the next few sections discuss
  448. some of the main areas of ongoing research in mobile computing.
  449.  
  450. ------------------------------
  451. Subject: [4.2] Communications protocols
  452. From: Mobile and disconnected computing
  453.  
  454. Mobile-IP [Myles & Perkins, 93] `allows packets between mobile hosts
  455. or networks and other hosts (including fixed hosts) to be delivered
  456. along close to optimal routes'.  Compatibility with existing IP
  457. implementations is one of the key problems in Mobile-IP.  For example,
  458. [Perkins et. al, 93], have suggested a scheme based upon the loose
  459. source routing option of IP packets, but most existing IP
  460. implementations do not implement this option.  Scalability is yet
  461. another important issue.
  462.  
  463. The Columbia scheme [Ioannidis et al., 91] uses IP-in-IP
  464. encapsulation, thus avoiding problems with non-conforming
  465. implementations; but it achieves only sub-optimal routing for mobility
  466. across widely distributed locations [Aziz, 94].  Some efficient
  467. implementations of IP-in-IP encapsulation capable of supporting
  468. near-optimal wide area mobile routing have been suggested [Aziz, 94],
  469. but more experimentation is required.
  470.  
  471. For resource-constrained mobile computers, hosting a full IP protocol
  472. suite may be an unacceptable resource burden.  Being able to gateway
  473. with a lightweight protocol to a network node which is hosting a
  474. `heavyweight' protocol suite is a valuable capability [Hildebrand,
  475. 94].  Lightweight protocols can also make better use of the bandwidth
  476. limitations of wireless communications.
  477.  
  478. Apart from this, architectures and implementations that handle the
  479. impact of mobility at higher layers have also been proposed -- such as
  480. the connection-oriented services discussed by Katz [Keeton et. al.,
  481. 93], and the mobile socket interface discussed by Casey [Casey, 93].
  482. Current trends would appear to suggest that some form of Mobile-IP
  483. will soon become standard, whereas connection maintenance and caching
  484. in higher-level protocols still needs to be resolved.
  485.  
  486. ------------------------------
  487. Subject: [4.3] Access to files
  488. From: Mobile and disconnected computing
  489.  
  490. File access in a mobile computing environment, where the communication
  491. link to a file server is not guaranteed, has been a major area of
  492. study.  Coda [Satyanarayan, 90], a descendant of the Andrew File
  493. system (AFS), pioneered support for disconnected operations in
  494. file-systems.  Coda increases file availability by replicating a
  495. single volume at multiple server locations.  Disconnected operations
  496. occur when the set of accessible servers for a particular volume
  497. becomes null.  Coda supports disconnected operations by pre-caching
  498. the files a user is most likely to need and then allowing all
  499. operations on cached copies of these files, while disconnected.  Upon
  500. reconnection, reintegration occurs through reconciliation of the
  501. cached copy with the now-reachable server's copy, through the use of a
  502. replay log maintained during the disconnection.
  503.  
  504. Disconnected operations have also been implemented for AFS [Huston,
  505. 93].  The highly available peer-to-peer based Ficus [Page, 91] file
  506. system achieves similar results, although mobile computing was not one
  507. its initial applications.  Caching issues are beginning to predominate
  508. the open research topics in this area.  In between connected and
  509. disconnected states, there are many states of expensive, intermittent
  510. and unreliable connections.  Adapting caching to these varying
  511. situations is a necessity.  More importantly, as introduced by the
  512. Hoarding scheme of Coda, user control over some caching behavior is
  513. extremely beneficial, and this need for user input becomes even more
  514. important when the server connection is weak.
  515.  
  516. ------------------------------
  517. Subject: [4.4] Power management
  518. From: Mobile and disconnected computing
  519.  
  520. Current battery technology limits PDA use to only a few hours.  The
  521. conservation of power through system software is thus becoming a major
  522. area of research in mobile computing.  Two specific approaches to this
  523. problem exist.
  524.  
  525. - Some researchers [Greenawalt, 93] are attempting to analyse the effects
  526.   of application type, user input and operating system implementations on
  527.   device power consumption.  Based upon simulation data, several power
  528.   consumption models have been proposed for disks [Greenawalt, 93]
  529.   [Douglis & Marsh, 93].  Work in characterising and analysing the power
  530.   consumption problem is still ongoing.
  531.  
  532. - Several industry-led efforts, on the other hand, have focussed on
  533.   building system support for dynamic power-saving mechanisms.  The
  534.   Advanced Power Management standard presents an interface and structure
  535.   for manipulating power consumption.  The Nomadic System Group at Sun
  536.   Microsystems has integrated similar support into SVR4 [Bender et. al,
  537.   93]; these facilities are also available in QNX.
  538.  
  539. Complete analysis of peripheral device power usage and experimentation
  540. with different strategies for implementing power management will certainly
  541. be useful.
  542.  
  543. ------------------------------
  544. Subject: [4.5] Other issues
  545. From: Mobile and disconnected computing
  546.  
  547. Two significant aspects of mobile computing give applications in this
  548. environment a very different flavour.
  549.  
  550. - The dynamic nature of the environment forces applications to handle
  551.   changes in the availability and allocation of software resources.
  552.   Dynamic changes to environment variables [Schlitt, 93], change in
  553.   the available version of a library [Goldstein, 94] and the ability
  554.   to lookup and retrieve objects from remote locations [Theimer, 93]
  555.   are all required to solve this problem.  For the very same reasons,
  556.   user interfaces add on an extra dimension, an issue which very few
  557.   have addressed so far [Landay & Kaufmann, 93]. All this has caused
  558.   certain vendors to move towards interpreted environments, based on
  559.   scripting(??) languages as such as Script-X (Kaleida) and Open
  560.   Scripting Architecture (Apple).
  561.  
  562. - Money will be a constituent of many of the transactions and
  563.   applications that mobile computers will typically be used for.
  564.   Hence, many pieces of system software will be required to handle,
  565.   understand and optimise the use of money [Kulkarni, 94].  As
  566.   mentioned by Ed Frank at the ICDCS '93 panel discussion on mobile
  567.   computing, transaction involving `money and sex' may well become the
  568.   biggest uses of the mobile computer.  Some initial forays into
  569.   reviewing policies for pricing Internet services [Shenker, 93] may
  570.   prove to be very useful and so will the experience of current
  571.   consumer service providers such as CompuServe and America Online.
  572.   This area will perhaps show the biggest divergence in the years to
  573.   come, since applications will be far more customer-needs driven than
  574.   technology-driven, as they have been in the past.
  575.  
  576. Finally, aspects of hardware support are critical to positioning any
  577. discussion on mobile computing.  The most ambitious system is perhaps
  578. the ParcTab system [Schlitt, 93] under development at Xerox PARC.  The
  579. ParcTab is a PDA that communicates via infrared data packets to a
  580. network of infrared transceivers.  The network, designed for use
  581. within a building, designates each room as a communication cell.  This
  582. infrastructure has the responsibility for providing reliable service
  583. as the ParcTab user moves from room to room.  More general purpose but
  584. less ambitious PDAs are currently available from AT&T (EO), Apple
  585. (Newton), IBM (Simon) etc.  Almost all recognise some alternate form
  586. of input, such as handwriting.  The capabilities of these PDAs are
  587. sure to increase in the coming years, and hopefully their prices will
  588. not follow a similar trend.
  589.  
  590. ------------------------------
  591. Subject: [4.6] An introductory mobile computing bibliography
  592. From: Mobile and disconnected computing
  593.  
  594. [Marsh, 93]
  595.   Marsh, B., Douglis, F. & Caceres, R., `System issues in mobile
  596.     computing', Technical Report, Matsushita Information Technology
  597.     Laboratory, ITL-TR-50-93
  598.  
  599. [Satyanarayanan, 93]
  600.   Satyanarayanan et. al, `Experience with disconnected operation in a
  601.     mobile computing environment', Proceedings of Mobile and
  602.     Location-Independent Computing Symposium, August 93, pp. 11-28
  603.  
  604. [Banerji, 93]
  605.   Banerji, A., Cohn, D. & Kulkarni, D., `Mobile computing personae',
  606.     Proceedings of Fourth Workshop on Workstation Operating Systems,
  607.     October 93, pp. 14-20
  608.  
  609. [Weiser, 91]
  610.   Weiser, M., `The computer for the 21st century', Scientific
  611.     American, September 91, pp. 94-104
  612.  
  613. [Myles & Perkins, 94]
  614.   Myles, A. & Perkins, C., Internet Draft, September, 93
  615.  
  616. [Perkins et. al, 93]
  617.   Bhagwat, P. & Perkins, C., `A mobile networking system based on IP',
  618.     Proceedings of Mobile and Location-Independent Computing
  619.     Symposium, August 93, pp. 69-82
  620.  
  621. [Ioannidis et. al, 91]
  622.   `IP based protocols for mobile internetworking', Proceedings of the
  623.     SIGCOMM-91 conference: Communications, Architectures and
  624.     Protocols, September 91, pp. 235-245
  625.  
  626. [Aziz, 94]
  627.   Aziz, A., `A scalable and efficient intra-domain tunneling mobile-IP
  628.     scheme', ACM SIGCOMM-Computer Communications Review, Vol 24.,
  629.     No. 1, January 94, pp. 12-20
  630.  
  631. [Keeton et al., 93]
  632.   Keeton, K. et al., `Providing connection oriented network services
  633.     to mobile hosts', Proceedings of Mobile and Location-Independent
  634.     Computing Symposium, August 93, pp. 83-102
  635.  
  636. [Casey, 94]
  637.   Casey, M., `Application and communication support for mobile
  638.     computing', Dissertation Proposal, University of Notre Dame,
  639.     January 94
  640.  
  641. [Satyanarayanan, 90]
  642.   Satyanarayanan, M., et al., `Coda: A highly available File-system
  643.     for a distributed workstation environment', IEEE Transactions on
  644.     Computers 39(4), April 90
  645.  
  646. [Huston, 93]
  647.   Huston, L. & Honeyman, P., `Disconnected operation for AFS',
  648.     Proceedings of Mobile and Location- Independent Computing
  649.     Symposium, August 93, pp. 1-10
  650.  
  651. [Page, 91]
  652.   Page, T. et al., `Architecture of the Ficus replicated file system',
  653.     Tech Report CSD-910005, University of California, Los Angeles,
  654.     March 91
  655.  
  656. [Greenawalt, 93]
  657.   Greenawalt, P., `Modelling power management for hard disks',
  658.     Intl. Workshop on Modelling, Analysis & Simulation of Computer and
  659.     Telecommunication Systems, January 94
  660.  
  661. [Douglis & Marsh, 93]
  662.   Douglis, F. & Marsh, B., `Low power disk management for mobile
  663.     computers', Technical Report, Matsushita Information Technology
  664.     Laboratory, MITL-TR-53-93
  665.  
  666. [Bender et. al, 93]
  667.   Nomadic Systems Group, Sun Microsystems, `UNIX for Nomads: Making
  668.     UNIX support mobile computing', Proceedings of Mobile and
  669.     Location-Independent Computing Symposium, August 93, pp. 53-68
  670.  
  671. [Schlitt, 93]
  672.   Schlitt, B., Theimer, M. & Welch, B., `Customizing mobile
  673.     applications', Proceedings of Mobile and Location-Independent
  674.     Computing Symposium, August 93, pp. 129-138
  675.  
  676. [Hildebrand, 94]
  677.   Hildebrand, D., `QNX: microkernel technology for open systems
  678.     handheld computing', Proceedings of Pen and Portable Computing
  679.     Conference Exposition, May 1994.  Available via ftp from
  680.     ftp.qnx.com:pub/papers/qnx-pen.ps.Z.
  681.  
  682. [Goldstein, 94]
  683.   Goldstein, T. & Sloane, A., `The object binary interface -- C++
  684.     objects for evolvable shared class libraries', Proceedings of the
  685.     USENIX C++ Conference, April 94
  686.  
  687. [Theimer, 93]
  688.   Theimer, M., Demers, A. & Welch, B., `Operating system issues for
  689.     PDAs', Proceedings of Fourth Workshop on Workstation Operating
  690.     Systems, October 93, pp. 14-20
  691.  
  692. [Landay & Kaufmann, 93]
  693.   Landay, J. & Kaufmann, T., `User-interface issues in mobile
  694.     computing', Proceedings of Fourth Workshop on Workstation
  695.     Operating Systems, October 93, pp. 40-47
  696.  
  697. [Kulkarni, 94]
  698.   Kulkarni, D., Banerji, A., Cohn, D., `Operating systems and cost
  699.     management', Operating Systems Review, January 94.
  700.  
  701. [Shenker, 93]
  702.   Shenker, S., `Service models and pricing policies for an integrated
  703.     services Internet', Proceedings on Conference on Public Access to
  704.     the Internet, JFK School of Government, Harvard University, May 93
  705.  
  706. [Schlitt, 93]
  707.   Schlitt et al., `The ParcTab mobile computing system', Proceedings
  708.     of Fourth Workshop on Workstation Operating Systems, October 93,
  709.     pp. 34-39
  710.  
  711.  
  712.  
  713. ------------------------------
  714. Subject: [5] Operating systems teaching
  715. From: Operating systems teaching
  716.  
  717. This section attempts to give some useful pointers to people who teach
  718. operating systems, both at undergraduate and postgraduate level.
  719.  
  720. ------------------------------
  721. Subject: [5.1] What good undergraduate-level texts are available?
  722. From: Operating systems teaching
  723.  
  724. The comments below have been provided by a variety of people, so any
  725. `me's or `I's you encounter are not necessarily those of the
  726. maintainer!
  727.  
  728. - `Operating Systems Concepts', fourth edition, by Abraham
  729.   Silberschatz and Peter Galvin is the latest version of this popular
  730.   text.  Addison-Wesley, 1994, ISBN 0-201-50480.  This book has been
  731.   revised to include new and updated information, examples, diagrams,
  732.   and an expanded bibliography.
  733.  
  734.   I think this is the `standard' OS text, although I have a couple of
  735.   others that I also think are good, and that I draw from when I teach
  736.   OS.  Previous editions of the dinosaur book don't have the greatest
  737.   organisation, and sometimes wander when describing things.  Its
  738.   strong point lies in the copious examples.
  739.  
  740.   Speaking of the third edition (I haven't seen a copy of the fourth
  741.   edition yet):
  742.  
  743.     The first 84 pages cover operating system basics, the next 120
  744.     pages cover process management including 30 pages on deadlocks.
  745.     130 pages on storage management: memory, virtual memory, secondary
  746.     storage.  70 pages on file systems and protection.  Then 100 pages
  747.     on distributed systems.  The last part of the book has case
  748.     studies on Unix and Mach: 50 pages on Unix and 30 pages on Mach.
  749.     The last chapter gives a short 10 page historical perspective.
  750.  
  751.   Mail a message with contents `send help' to <os4e@aw.com> for
  752.   further details of the new edition.  The book gives a good (but
  753.   slightly theoretical) overview of operating system concepts.  A good
  754.   complement would be the books covering Minix or BSD, which are more
  755.   implementation-oriented.
  756.  
  757. - `Operating Systems', Harvey Deitel, Addison-Wesley, 1990, ISBN
  758.   0-201-18038-3.  Not a bad book; gives the same sort of theoretical
  759.   treatment of operating systems as the dinosaur book.  Includes case
  760.   studies on Unix, MS DOS, MVS, VM, the Macintosh OS, and OS/2.
  761.  
  762. - `An Operating Systems Vade Mecum', second edition, by Raphael
  763.   Finkel, 1988, Prentice Hall, ISBN 0-13-637950-8.  I really like this
  764.   book; it is a bit more theoretical than the dinosaur book, but is
  765.   well-written and clear.  I would accompany it with labs based on one
  766.   of the educational experimental OS's (NachOS, OSP) for hands-on
  767.   experience.
  768.  
  769.   The edition mentioned above is now out of print.  However, it may be
  770.   obtained via anonymous ftp from
  771.   ftp.ms.uky.edu:pub/tech-reports/UK/cs/vade.mecum.2.ps.Z.  Here is
  772.   the associated chunk of README:
  773.  
  774.     This textbook is out of print.  It was published by Prentice Hall.
  775.     The author now owns the copyright.  Permission is granted to copy
  776.     this text for any noncommercial purpose.  Feel free to generate
  777.     copies of the text for your students.  You may also photocopy the
  778.     original book without restriction.  Kindly send suggested upgrades
  779.     to the author: raphael@ms.uky.edu.  He is planning a new edition
  780.     sometime.
  781.  
  782.   [It's been a few years since I've looked at this book, so I can't
  783.    remember what it contains.  Can anyone help?]
  784.  
  785. - `The Logical Design of Operating Systems', second edition, Lubomir
  786.   Bic, Alan Shaw, 1988, Prentice Hall, ISBN 0-13-540139-9.  This one
  787.   isn't as theoretical as Finkel's book, nor is it as long as the
  788.   dinosaur book.  I haven't tried to use it in a course yet, but it
  789.   looks like a fairly well-rounded text.
  790.  
  791.   [Can anyone write a paragraph on the various topics covered ... ?]
  792.  
  793. - `Operating Systems', second edition, William Stallings
  794.   <ws@shore.net>, Prentice-Hall, 1992, ISBN 0-02-415493-8.  I received
  795.   very positive feedback from students about the first edition of this
  796.   book; I have not yet seen the second edition.  The explanations of
  797.   topics were easy to understand and complete.  An especially nice
  798.   feature was that at the end of each chapter OS/2, Unix and MVS were
  799.   used to demonstrate real life implementations of the theory talked
  800.   about.  I found this tying together of theory and practice much
  801.   nicer than having the practice lumped at the end of the book.
  802.  
  803. - `Modern Operating Systems,' Andrew Tanenbaum <ast@cs.vu.nl>, 1992,
  804.   Prentice Hall, ISBN 0-13-588187-0.  This started out as a rewrite of
  805.   the Minix book, but he pulled the Minix-specific material and added
  806.   seven chapters on distributed systems.  It's a bit heavy for
  807.   undergrads, depending on how far into the distributed systems you
  808.   go, but I like Tanenbaum as an author.  He'll be bringing out a
  809.   second edition of the Minix book sometime soon; as he says, one is
  810.   for `hands-on' (Minix) and one is for `hands-off' (Modern OS).
  811.  
  812.   The book is divided into two parts: `traditional' introductory
  813.   material, taken more or less verbatim from the Minix book, and an
  814.   introduction to distributed systems.  Each parts concludes with a
  815.   case study and comparison of two well-known systems (Unix and
  816.   MS-DOS, and Mach and Amoeba).  The bibliography at the end is
  817.   organised well for more advanced coverage of the topics encountered
  818.   throughout the book.
  819.  
  820.   Topics covered in the first part include process concepts, memory
  821.   management, file system organisation and I/O, and deadlock detection
  822.   and avoidance.  The second part addresses issues such as distributed
  823.   communication, synchronisation (the section on clock synchronisation
  824.   is well put together), processes in distributed environments
  825.   (nothing on process migration), and distributed file systems (using
  826.   AFS as an example).  The second part seems more suitable for
  827.   advanced undergraduate level or introductory graduate level studies.
  828.  
  829.   This book has been translated into German; it is available from
  830.   Carl Hanser Verlag as `Moderne Betriebssysteme', ISBN 3-446-17472-9.
  831.  
  832. - `Operating Systems Programming: The SR Programming Language',
  833.   Stephen J. Hartley <shartley@mcs.drexel.edu>, Oxford University
  834.   Press, 1995, ISBN 0-19-5095790.  SR is a language for concurrent
  835.   programming; this book presents the language, presents some example
  836.   programs in the context of operating systems or concurrent
  837.   programming, and provides exercises in the form of Open Student
  838.   Laboratories.  The book is designed to be used in conjunction with
  839.   one of the standard operating systems texts to provide concurrent
  840.   programming experience, or can be used alone as an introductory
  841.   concurrent programming book.  I have not seen a copy of it yet, and
  842.   so cannot comment on its quality.  The example programs in the book
  843.   are intended for running in a Unix environment; they are available
  844.   via anonymous ftp from mcs.drexel.edu:pub/shartley, and the SR
  845.   language itself is available from cs.arizona.edu:sr.
  846.  
  847. ------------------------------
  848. Subject: [5.2] Graduate-level texts
  849. From: Operating systems teaching
  850.  
  851. This section is still under construction.
  852.  
  853. - `Distributed Systems', second edition, by Sape Mullender,
  854.   Addison-Wesley, 1994, ISBN 0-201-62427-3.  A review is forthcoming.
  855.  
  856. - `Distributed Operating Systems -- the Logical Design', Andrzej
  857.   Goscinski, Addison-Wesley, 1991, ISBN 0-201-41704-9.  A thorough
  858.   desk reference, but reads a little too much like an encyclopedia for
  859.   use as a textbook.
  860.  
  861. - `Modern Operating Systems,' Andrew Tanenbaum <ast@cs.vu.nl>, 1992,
  862.   Prentice Hall, ISBN 0-13-588187-0.  The section of this book which
  863.   covers distributed systems is suitable for use at introductory
  864.   graduate level.  See above for further details.
  865.  
  866. - `Concurrent Systems', Jean Bacon, 1992, Addison-Wesley, ISBN
  867.   0-201-41677-8.  This covers much the same material as `Modern
  868.   Operating Systems', but goes into rather more detail on databases
  869.   and languages.  The book is divided into four parts, and comes with
  870.   a separate instructor's manual (ISBN 0-201-62406-0).  The first
  871.   covers basic material, such as OS functions, and system and language
  872.   support for concurrent processes.  Part 2 deals with simple
  873.   concurrent actions, covering topics such as shared-memory IPC,
  874.   message passing, persistent data, crashes, and distributed data.
  875.   The third part of the book covers transactions, concurrency control,
  876.   and failure recovery.  The final section presents a set of case
  877.   studies, with Unix, Mach and Chorus being covered, along with some
  878.   of the work done at Cambridge over the past decade.  An interesting
  879.   emphasis is placed on language-level support for concurrency
  880.   throughout the book, and the focus on database issues is also a good
  881.   thing.
  882.  
  883.   I haven't read the book in as much detail as I would like, but it
  884.   seems to be well put together.  The cramming of so many topics under
  885.   one cover means that there is probably too much material for a
  886.   single undergraduate course, and the book perforce does not go into
  887.   as much detail as I would like on some topics (a problem I also find
  888.   with Tanenbaum's book).  Well worth a look, however.
  889.  
  890. - `Distributed Systems: Concepts and Design', second edition, George
  891.   Coulouris <George.Coulouris@dcs.qmw.ac.uk>, Jean Dollimore, and Tim
  892.   Kindberg, Addison-Wesley 1994, ISBN 0-201-62433-8.  This text treats
  893.   a wide variety of issues at a level suitable for advanced
  894.   undergraduate and postgraduate teaching.  Basic topics covered
  895.   include IPC, networking and RPC, upon which notions of distributed
  896.   operation and provision of services are built.  Coverage of
  897.   distributed synchronisation leads on to a treatment of replication,
  898.   simple transactions and concurrency control.  The final chapters
  899.   include material on distributed transactions, fault tolerance,
  900.   security, and distributed shared memory.
  901.  
  902.   Illustrative examples taken from modern `real world' systems such as
  903.   Sun RPC, the Andrew File System, and PGP are provided throughout the
  904.   book, and case studies of the Amoeba, Mach, Chorus, and Clouds
  905.   systems appear towards the end.  Exercises are presented at the end
  906.   of each chapter.  The prose is clear, and the layout pleasant.  This
  907.   is, by a narrow margin, the best distributed systems textbook I have
  908.   come across.
  909.  
  910. - `Advanced Concepts in Operating Systems -- Distributed,
  911.   Multiprocessor, and Database Operating Systems', Mukesh Singhal,
  912.   Niranjan G. Shivaratri, McGraw-Hill, 1994, ISBN 0-07-057572-X.  A
  913.   solid work on advanced operating systems, with some emphasis on
  914.   theoretical aspects.  Well over 2/3 of the book focuses on
  915.   distributed operating systems.  It does a good job of covering all
  916.   the bases, but at times omits vital information or obfuscates what
  917.   should be simple issues.
  918.  
  919. ------------------------------
  920. Subject: [5.3] Do any texts cover the implementation of specific operating systems?
  921. From: Operating systems teaching
  922.  
  923. Some books commonly used in conjunction with the texts listed above
  924. are:
  925.  
  926. - `The Design and Implementation of the 4.3BSD Unix Operating System',
  927.   Samuel Leffler, Kirk McKusick, Michael Karels, John Quarterman,
  928.   1989, Addison-Wesley, ISBN 0-201-06196-1.  This book describes the
  929.   kernel of 4.3BSD Unix in some detail, covering process and memory
  930.   management (the latter being heavily VAX-oriented), file system
  931.   organisation, device driver internals, terminal handling, IPC,
  932.   network communications, some details of the Internet protocols, and
  933.   system operation.  I found this book to be well-written and concise.
  934.  
  935.   Accompanying the above is the `4.3BSD Answer Book', Samuel Leffler,
  936.   Kirk McKusick, 1991, Addison-Wesley, ISBN 0-201-54629-9.  This short
  937.   book provides answers to all of the exercises found at the end of
  938.   each chapter in the daemon book.
  939.  
  940. - `The Design of the Unix Operating System', Maurice Bach, 1986,
  941.   Prentice Hall, ISBN 0-13-201757-1.  This is the authoritative
  942.   description of the internals of System V Unix.  Due to copyright
  943.   restrictions, it contains no actual code, but rather pseudo-code (I
  944.   didn't find this to be a problem).  I haven't read this book in a
  945.   few years, so I can't remember what it covers.
  946.  
  947. - `The Magic Garden Explained: The Internals of Unix System V Release
  948.   4', Berny Goodheart, James Cox, 1994, Prentice Hall, ISBN
  949.   0-13-098138-9.  This books covers the workings of SVR4 in
  950.   substantial detail; it is more detailed than either of the above
  951.   texts, and appears to be of very high quality.  While the authors
  952.   recommend the book be read in parallel with study of the original
  953.   Unix source code, sufficient pseudocode representation of the key
  954.   algorithms has been included to permit a more or less detailed study
  955.   without restricted access to the original source code.
  956.  
  957. I am not aware of any similar book which covers the implementation of
  958. a distributed system.
  959.  
  960. ------------------------------
  961. Subject: [5.4] What instructional operating systems can I use?
  962. From: Operating systems teaching
  963.  
  964. - Minix, from Amsterdam's Vrije Universiteit, was developed by Andy
  965.   Tanenbaum <ast@cs.vu.nl>, and is a mostly-Unix lookalike based on a
  966.   message-passing microkernel-similar architecture.  The system is
  967.   used in Tanenbaum's `Modern Operating Systems' and its predecessor,
  968.   `Operating Systems: Design and Implementation'.  See the Minix
  969.   Information Sheet, posted regularly to comp.os.minix, for ordering
  970.   information; Minix is copyrighted and is not in the public domain.
  971.  
  972. - NachOS is an instructional OS developed at Berkeley by Tom Anderson
  973.   <tea@cs.berkeley.edu>, Wayne Christopher, Stephen Procter (and
  974.   others?).  It currently runs on DEC MIPS and Sun SPARC workstations,
  975.   HP PA-RISC, and 386BSD machines.  The NachOS system, along with
  976.   sample assignments and an overview paper which was presented at
  977.   Usenix, is available via anonymous ftp from
  978.   ftp.cs.berkeley.edu:ucb/nachos.
  979.  
  980. - OSP (current version is 1.7) is an operating systems simulator,
  981.   available via ftp from sblapis1.cs.sunysb.edu, with username
  982.   ospftp, and password as in the instructor's guide.  Used in
  983.   `OSP---an Environment for Operating Systems', Michael Kifer, Scott
  984.   Smolka, Addison-Wesley.
  985.  
  986. - SunOS Minix consists of a set of patches for Minix which allows the
  987.   Minix system to run in a single monolithic Unix process on top of
  988.   SunOS 4.x on Sun 3 and Sun 4 machines.  SunOS Minix is produced by
  989.   applying a set of patches to Mac Minix 1.5 (both 1.5.10.0 and
  990.   1.5.10.1 can be used) or PC Minix 1.5.  Also, Atari Minix has been
  991.   used as the base version by at least one person.  The latest version
  992.   (2.0) includes a preliminary attempt at a port to Solaris 2.x.
  993.   SunOS Minix is available via anonymous ftp from
  994.   csc.canterbury.ac.nz:UNIX/SMX_2_00.TAR_Z.
  995.  
  996. - VSTa is not intended as an instructional operating system, but it is
  997.   certainly small and concise enough to be tractable, and the code is
  998.   clean and provides modern microkernel features.  See part 2 of the
  999.   FAQ for further details.
  1000.  
  1001. - Xinu was developed at Purdue by Doug Comer and some others.  It was
  1002.   designed to be small and layered, so that the code is succinct and
  1003.   easily understandable.  It is intended for education, and is a
  1004.   `conventional' operating system.  Xinu runs on the IBM PC, Sun-3,
  1005.   SPARC, LSI, MIPS, Macintosh, and VAX architectures.  The system is
  1006.   used in Comer's `Operating System Design: the Xinu Approach'.
  1007.   Contact <xinu-librarian@cs.purdue.edu> or Prentice Hall for ordering
  1008.   information; Xinu is copyrighted and is not in the public domain.
  1009.  
  1010. ------------------------------
  1011. Subject: [5.5] Where can I find the canonical list of OS papers for grad courses?
  1012. From: Operating systems teaching
  1013.  
  1014. [93-03-14-17-09.47] Darrell Long <darrell@cse.ucsc.edu> maintains a
  1015. bibliography which provides a good starting point for graduate OS
  1016. course reading lists.  This may be imported using refdbms as
  1017. ucsc.grad.os, from refdbms.cse.ucsc.edu 4117 or refdbms.cs.vu.nl 4117.
  1018. Archive-name: os-research/part2
  1019. Version: $Revision: 1.20 $
  1020. Last-Modified: $Date: 1995/02/03 14:32:46 $
  1021.  
  1022.         Answers to frequently asked questions
  1023.           for comp.os.research: part 2 of 3
  1024.  
  1025.                Copyright (C) 1993--1995
  1026.                Bryan O'Sullivan
  1027.  
  1028.  
  1029.  
  1030.               TABLE OF CONTENTS
  1031.  
  1032.  
  1033. 1.     Available software
  1034. 1.1.   Where can I find Unix process checkpointing and restoration packages?
  1035. 1.2.   What threads packages are available for me to use?
  1036. 1.3.   Where can I find operating systems distributions?
  1037. 1.3.1. Distributed systems and microkernels
  1038. 1.3.2. Unix lookalikes
  1039. 1.3.3. Others
  1040.  
  1041. 2.     Performance and workload studies
  1042. 2.1.   TCP internetwork traffic characteristics
  1043. 2.2.   File system traces
  1044. 2.3.   Modern Unix file and block sizes
  1045. 2.3.1. File sizes
  1046. 2.3.2. Block sizes
  1047. 2.3.3. Inode ratios
  1048.  
  1049. 3.     Papers, reports, and bibliographies
  1050. 3.1.   From where are papers for distributed systems available?
  1051. 3.2.   Where can I find other papers?
  1052. 3.3.   Where can I find bibliographies?
  1053.  
  1054. 4.     General Internet-accessible resources
  1055. 4.1.   Wide Area Information Service (WAIS) and World-Wide Web (WWW) servers
  1056. 4.2.   Refdbms---a distributed bibliographic database system
  1057. 4.3.   Willow -- the information looker-upper
  1058. 4.4.   Computer science bibliographies and technical reports
  1059. 4.5.   The comp.os.research archive
  1060. 4.6.   Miscellaneous resources
  1061.  
  1062. 5.     Disclaimer and copyright
  1063.  
  1064.  
  1065. ------------------------------
  1066. Subject: [1] Available software
  1067. From: Available software
  1068.  
  1069. This section covers various software packages, operating systems
  1070. distributions, and miscellaneous other such items which may be of
  1071. interest to the operating systems research community.  If you have
  1072. written, or know of, some software which you believe would be of
  1073. fairly wide interest, please get in touch with the FAQ maintainer with
  1074. a view to having a short spiel and availability information included
  1075. here.
  1076.  
  1077. ------------------------------
  1078. Subject: [1.1] Where can I find Unix process checkpointing and restoration packages?
  1079. From: Available software
  1080.  
  1081. - [93-01-21-10-18.30] The Condor system is available via anonymous ftp
  1082.   from ftp.cs.wisc.edu.  Condor works entirely at user level [no
  1083.   kernel modifications required] but doesn't currently support
  1084.   interprocess communication, signals, or fork().  Definitely worth a
  1085.   look.
  1086.  
  1087. - Bennet S Yee implemented a `mostly portable' checkpoint and restore
  1088.   package back around 1987.  When the programmer invokes the
  1089.   checkpoint procedure, it saves the state to a file; when a second
  1090.   process with the same program (but with different arguments) is
  1091.   started which calls the restore procedure, it reads the old state
  1092.   from the file.  Available via anonymous ftp from
  1093.   play.trust.cs.cmu.edu:usr/bsy/pub/save_world.shar.Z.  This package
  1094.   is known to work for Pmaxen, Sun4's, Sun3's, IBM RTs, and VAXen.
  1095.   Porting it to a new architecture should be relatively simple -- look
  1096.   at the README file.
  1097.  
  1098. ------------------------------
  1099. Subject: [1.2] What threads packages are available for me to use?
  1100. From: Available software
  1101.  
  1102. - [93-02-01-10-15.15] For DEC customers, versions of VMS after 5.5 and
  1103.   Ultrix after 4.3 include bundled threads packages which implement
  1104.   both DEC's proprietary CMA and draft 4 of IEEE Pthreads.
  1105.  
  1106. - SunOS 4.x provides, as standard, a lightweight process (lwp) library
  1107.   which isn't compatible with anything else currently available;
  1108.   Solaris 2.x comes with a threads library which is incompatible with
  1109.   lwp as well as everything else.
  1110.  
  1111. - The POSIX / Ada-Runtime Project (PART) has made available an
  1112.   implementation of draft 6 of the POSIX 1003.4a Pthreads
  1113.   specification, which runs under SunOS 4.x; the current release is
  1114.   version 1.20.  Available using anonymous ftp from
  1115.   ftp.cs.fsu.edu:pub/PART.
  1116.  
  1117. - Another POSIX thread package is available via anonymous ftp from
  1118.   sipb.mit.edu:pub/pthreads; it is based on draft 8 of the POSIX
  1119.   thread standard.  It currently runs on NetBSD 0.9, FreeBSD 1.1,
  1120.   Linux 1.0, Ultrix 4.2 for the DECstation, SunOS 4.1.3 for the SPARC,
  1121.   and HP/UX 9.03 for the PA/RISC.  The latest version is 1.27 and
  1122.   contains a thread safe stdio, malloc and free, and properly behaving
  1123.   sleep, read, and write functions that only block the current thread,
  1124.   not the process.  For more information, contact Christopher
  1125.   Provenzano <proven@mit.edu>.
  1126.  
  1127. - Stephen Crane has written a `fairly portable' threads package,
  1128.   which runs under Sun 3, Sun 4, MIPS/RISCos, Linux, and 386BSD.  It
  1129.   is available via anonymous ftp from dse.doc.ic.ac.uk:rex/lwp.tar.gz,
  1130.   with documentation in the same directory named lwp.ps.gz.
  1131.  
  1132. - QuickThreads is a toolkit for building threads packages, written by
  1133.   David Keppel.  It is available via anonymous ftp from
  1134.   ftp.cs.washington.edu:pub/qt-001.tar.Z, with an accompanying tech
  1135.   report at ftp.cs.washington.edu:tr/1993/05/UW-CSE-93-05-06.PS.Z.
  1136.   The code as distributed includes ports for the Alpha, x86, 88000,
  1137.   MIPS, SPARC, VAX, and KSR1.
  1138.   
  1139. [DCE threads? cthreads? pthreads implementations? others?]
  1140.  
  1141. ------------------------------
  1142. Subject: [1.3] Where can I find operating systems distributions?
  1143. From: Available software
  1144.  
  1145. This section covers the availability of several well-known systems;
  1146. the only criterion for inclusion of a system here is that it be of
  1147. interest to some segment of the OS research community (commercial
  1148. systems will be accepted for inclusion, so long as they are pertinent
  1149. to research).
  1150.  
  1151. ------------------------------
  1152. Subject: [1.3.1] Distributed systems and microkernels
  1153. From: Available software
  1154.  
  1155. See part one of the FAQ for further information on some of the systems
  1156. listed below.
  1157.  
  1158. - [93-03-31-22-49.53] ACE is the distribution, support and sales
  1159.   channel for Amoeba.  `Due to overwhelming response from non-profit
  1160.   organisations wishing to obtain Amoeba for their research
  1161.   activities', VU is offering Amoeba 5.2 to research institutions for
  1162.   more or less free (via ftp at no charge, or on tape for $500 on
  1163.   Exabyte or $800 on QIC-24).  Amoeba currently supports 68020 and
  1164.   68030-based VME board machines, as well at i386- and i486-based AT
  1165.   PCs and Sun 3 and 4 machines.
  1166.  
  1167.   For further information on `commercial' Amoeba, you can contact ACE
  1168.   by email at <amoeba@ace.nl>, by phone at +31 20 664 6416, or by fax
  1169.   at +31 20 675 0389.  Universities interested in obtaining a license
  1170.   should send mail to <amoeba-license@cs.vu.nl>, or fax to +31 20 642
  1171.   7705.
  1172.  
  1173. - Chorus Systemes has special programmes for universities interested
  1174.   in using Chorus.  For more information on the offerings available,
  1175.   conditions, and other details, ftp to ftp.chorus.fr and get the
  1176.   following ASCII files:
  1177.     pub/README
  1178.     pub/academic/README
  1179.     pub/academic/offerings
  1180.  
  1181. - The Cronus object-oriented distributed system may be obtained via
  1182.   ftp from pineapple.bbn.com; email <cronus-help@bbn.com> for
  1183.   details of the account name and password.  Before attempting to get
  1184.   the Cronus distribution, you must obtain, via anonymous ftp,
  1185.   pineapple.bbn.com:Cronus-via-FTP-Terms.  Maintenance, hotline
  1186.   support, and training for Cronus are available from BBN.  Send email
  1187.   to the above address for information on these, or on obtaining a
  1188.   commercial license.
  1189.  
  1190. - Horus is available for research use; contact Ken Birman
  1191.   <ken@cs.cornell.edu> or Robbert van Renesse <rvr@cs.cornell.edu> for
  1192.   details.
  1193.  
  1194. - Isis has not been publicly available since 1989, but may (I'm not
  1195.   sure) still be obtained using anonymous ftp from ftp.uu.net or
  1196.   ftp.cs.cornell.edu.  After 1989, the code was picked up by Isis
  1197.   Distributed Systems, which has subsequently developed and supported
  1198.   it.  The commercial version of Isis (available `at very low cost' to
  1199.   academic institutions) is available from the company.  Email
  1200.   <info@isis.com> for information, or call +1-212-979-7729 or
  1201.   +1-607-272-6327.
  1202.  
  1203. - [92-09-19-08-55.18] Plan 9 is available to academic institutions on
  1204.   CD-ROM; the distribution consists of around 350MB of source and
  1205.   binaries.  For information on how to go about getting a license,
  1206.   contact
  1207.     Neera Kuckreja
  1208.     AT&T Bell Laboratories
  1209.     Room 2C-557
  1210.     Murray Hill, NJ 07974
  1211.     United States
  1212.  
  1213.     +1 (908) 582 3855
  1214.     neera@research.att.com
  1215.   As of September 1992, kernels existed for the Sun SLC, Sun4Cs of
  1216.   various types, NeXTstations, MIPS Magnum 3000, SGI 4D series,
  1217.   Gateway 486, AT&T Safari, `a whole bunch of' other PCs, and the
  1218.   Gnot.
  1219.  
  1220.   Sydney University Basser Department of Computer Science has a port
  1221.   of Plan 9 underway to the DEC Alpha at the moment.  A port to the
  1222.   Sun 3 has been completed.  Contact <plan9info@cs.su.oz.au> for
  1223.   details.
  1224.  
  1225.   The Plan 9 user mailing list may be subscribed to by sending mail to
  1226.   <9fans-request@cse.psu.edu>.
  1227.  
  1228. - QNX is available for academic applications through an education
  1229.   support programme run by QNX Software Systems, whereby QNX systems
  1230.   can be obtained for educational purposes at very low cost.  For
  1231.   commercial and education availability and pricing, contact:
  1232.     QNX Software Systems        QNX Software Systems
  1233.     175 Terrence Matthews Cr.    Westendstr. 19
  1234.     Kanata, Ontario K2M 1W8        6000 Frankfurt am Main 1
  1235.     Canada                Germany
  1236.  
  1237.     1 800 363 9001            +49 69 9754 6156 x299
  1238.     +1 (613) 591 0931
  1239.     +1 (613) 591 3579 (fax)        +49 69 9754 6110 (fax)
  1240.   Versions after 4.2 of QNX run on the i386 and later processors, with
  1241.   a 16-bit kernel included for i286 machines.  Native optimisations
  1242.   and a compiler for the Pentium are also included.  Further marketing
  1243.   information can be obtained on the World Wide Web from
  1244.   http://www.vir.com/vir/QNX-info1.html.
  1245.  
  1246. - [93-02-07-16-03.48] The Sprite Network Operating System is available
  1247.   on CD-ROM.  The disc contains the source code and documentation for
  1248.   Sprite, a research operating system developed at the University of
  1249.   California, Berkeley.  All the research papers from the Sprite
  1250.   project are also included on the disc.  This software on this disc
  1251.   is primarily intended for research purposes, and is not really
  1252.   intended to be used as a production system.  Boot images are
  1253.   provided for Sun SPARCstations and DECstations.  The CD-ROM is in
  1254.   ISO-9660 format with Rock Ridge extensions.  The disc contains about
  1255.   550 megabytes of software.
  1256.  
  1257.   You can get an overview of the Sprite Project, and a complete list
  1258.   of what is on this disc, by anonymous ftp from
  1259.   cdrom.com:pub/cdroms/sprite.
  1260.  
  1261.   If you would like a CD-ROM please send $25.  Add $4.95 if you would
  1262.   like a caddy too.  S&H is $5 (per order, not per disc) for
  1263.   US/Can/Mex, and $10 for overseas.  If you live in California, please
  1264.   add sales tax.  You can send a check or money order, or you can
  1265.   order with Mastercard/Visa/AmEx.
  1266.     Bob Bruce <rab@cdrom.com>
  1267.     Walnut Creek CDROM
  1268.     1547 Palos Verdes Mall, Suite 260
  1269.     Walnut Creek, CA 94596
  1270.     United States
  1271.  
  1272.        1 800 786-9907 (USA only)
  1273.       +1 510 947-5996
  1274.       +1 510 947-1644 (fax)
  1275.  
  1276. - VSTa is a copylefted system written by Andrew Valencia
  1277.   <vandys@cisco.com> which uses ideas from several research operating
  1278.   systems in its implementation.  It is currently in an `experimental
  1279.   but usable' state, and supports `lots of' POSIX, and runs on a
  1280.   number of different PC configurations.  For further information,
  1281.   send mail to <vsta-request@cisco.com>, or ftp to
  1282.   ftp.cygnus.com:pub/embedded/vsta.
  1283.  
  1284. [Mach, Chorus, Clouds?, Choices?]
  1285.  
  1286. ------------------------------
  1287. Subject: [1.3.2] Unix lookalikes
  1288. From: Available software
  1289.  
  1290. - Linux is available via anonymous ftp from
  1291.   tsx-11.mit.edu:pub/linux, ftp.funet.fi:pub/OS/Linux, and
  1292.   sunsite.unc.edu:pub/Linux.  It is a freely-distributable System
  1293.   V compatible Unix, and is covered by the GNU General Public License.
  1294.   Linux runs on ISA bus PCs with i386 or better CPUs and at least 4
  1295.   megabytes to run.
  1296.  
  1297. - 386BSD is available via ftp from agate.berkeley.edu:pub/386BSD or
  1298.   ftp.uu.net:systems/unix/386BSD.  It lies mid-way between 4.3BSD Reno
  1299.   and 4.4BSD internally, and contains no AT&T-copyrighted code.
  1300.   386BSD runs on ISA bus PCs with i386 or better CPUs.
  1301.  
  1302. - NetBSD is available via ftp from agate.berkeley.edu:pub/NetBSD.
  1303.  
  1304. - FreeBSD is available via ftp from freebsd.cdrom.com:pub/FreeBSD,
  1305.   ftp.cosy.sbg.ac.at:pub/mirror/FreeBSD, and
  1306.   pdq.coe.montana.edu:pub/mirrors/unix/freebsd.
  1307.  
  1308. - The Hurd is the GNU operating system, being written by Michael
  1309.   Bushnell.  It is based on Mach 3.0, and should be available on most
  1310.   systems to which Mach has been ported.  A preliminary runnable image
  1311.   may be fetched from alpha.gnu.ai.mit.edu:gnu/hurd-snap.tar.gz.
  1312.  
  1313. ------------------------------
  1314. Subject: [1.3.3] Others
  1315. From: Available software
  1316.  
  1317. [93-03-18-10-19.02] Microsoft is making sources of Windows NT
  1318. available under license to universities and research laboratories.
  1319. You should have the appropriate officials contact Mark Lewin
  1320. <marklew@microsoft.com> to get started on this process.
  1321.  
  1322.  
  1323.  
  1324. ------------------------------
  1325. Subject: [2] Performance and workload studies
  1326. From: Performance and workload studies
  1327.  
  1328. This section covers various different publicly-available traces and
  1329. studies, libraries and source distributions, which may be of use.
  1330.  
  1331. ------------------------------
  1332. Subject: [2.1] TCP internetwork traffic characteristics
  1333. From: Performance and workload studies
  1334.  
  1335. - [92-10-20-15-04.39] Peter Danzig and Sugih Jamin of USC have made
  1336.   available a report and a source library which simulates realistic
  1337.   day-to-day network traffic between nodes.  The library, tcplib, `is
  1338.   motivated by our observation that present-day wide-area tcp/ip
  1339.   traffic cannot be accurately modeled with simple analytical
  1340.   expressions, but instead requires a combination of detailed
  1341.   knowledge of the end-user applications responsible for the traffic
  1342.   and certain measured probability distributions'.
  1343.  
  1344.   The technical report and the source library it describes are
  1345.   available via anonymous ftp from
  1346.   jerico.usc.edu:pub/jamin/tcplib.  All you need to transfer to
  1347.   use the library are: README, brkdn_dist.h, tcpapps.h, tcplib.1, and
  1348.   one of libtcp* that matches your setup.  You need tcplib.tar.Z only
  1349.   if you must generate the library yourself.  The file tcplibtr.ps.Z
  1350.   is the PostScript version of the report.  The authors may be
  1351.   contacted at <traffic@excalibur.usc.edu>.
  1352.  
  1353. - [93-08-09-15-15.54] Vern Paxson of Lawrence Berkeley Laboratories
  1354.   has a report available via anonymous ftp which describes analytic
  1355.   models for wide-area TCP connections based upon a set of wide-area
  1356.   traffic traces.  The report may be obtained from
  1357.   ftp.ee.lbl.gov:WAN-TCP-models.{1,2}.ps.Z.
  1358.  
  1359. - [93-05-13-10-54.09] Vern Paxson also has made available another
  1360.   report, ftp.ee.lbl.gov:WAN-TCP-growth-trends.ps.Z, which provides an
  1361.   analysis of the growth trends of a medium-sized research
  1362.   laboratory's wide-area TCP connections over a period of more than
  1363.   two years.
  1364.  
  1365. ------------------------------
  1366. Subject: [2.2] File system traces
  1367. From: Performance and workload studies
  1368.  
  1369. - Chris Ruemmler has done a study on low-level disk access patterns
  1370.   for a workstation, a server, and a time-shared system which appeared
  1371.   in the Winter 1993 USENIX proceedings.  A copy may be obtained via
  1372.   anonymous ftp from ftp.hpl.hp.com:wilkes/HPL-92-152.ps.Z.
  1373.  
  1374. - Stephen Russell <smr@cs.unsw.oz.au> has instrumented the SunOS 4.1.x
  1375.   kernel running on Sun 3 machines.  The system allows time-stamped
  1376.   event records to be obtained from various points in the kernel.
  1377.   Events can be categorised (eg, paging, file system, etc), and are
  1378.   read via pseudo-devices.  Ioctl calls allow substreams to be
  1379.   enabled/disabled, buffer status checked, etc.  An external high
  1380.   resolution timer is used for timestamping.
  1381.  
  1382. - [93-05-09-09-23.32] The traces used in `Measurements of a
  1383.   distributed file system' (SOSP 1991) may be obtained via anonymous
  1384.   ftp from sprite.berkeley.edu:pub/sosp-traces.  An accompanying
  1385.   PostScript file, written by John H. Hartman
  1386.   <jhh@sprite.berkeley.edu>, which describes the trace file format,
  1387.   how to interpret the trace records, and other information may be
  1388.   found in the above directory as sospTraces.ps.Z.
  1389.  
  1390. - [93-06-18-13-02.48] Hidehiro Ishii <ishii@tsl.cl.nec.co.jp> has
  1391.   written a system which traces the NFS accesses seen by an NFS server
  1392.   and calculates statistics based on such traces.  Contact the author
  1393.   for details.
  1394.  
  1395. ------------------------------
  1396. Subject: [2.3] Modern Unix file and block sizes
  1397. From: Performance and workload studies
  1398.  
  1399. The following sections are lifted more or less verbatim from a number
  1400. of traces which were co-ordinated and analysed by Gordon Irlam
  1401. <gordoni@home.base.com>.  The numbers quoted below are based on Unix
  1402. file size data for 12 million files, residing on 1000 file systems,
  1403. with a total size of 250 gigabytes.
  1404.  
  1405. Further information may be obtained on the World Wide Web at
  1406. http://www.base.com/gordoni/ufs93.html.
  1407.  
  1408. ------------------------------
  1409. Subject: [2.3.1] File sizes
  1410. From: Performance and workload studies
  1411.  
  1412. There is no such thing as an average file system.  Some file systems
  1413. have lots of little files.  Others have a few big files.  However as a
  1414. mental model the notion of an average file system is invaluable.
  1415.  
  1416. The following table gives a break down of file sizes and the amount of
  1417. space they consume.
  1418.  
  1419.    file size       #files  %files  %files   disk space  %space  %space
  1420. (max. bytes)                        cumm.         (Mb)           cumm.
  1421.            0       147479     1.2     1.2          0.0     0.0     0.0
  1422.            1         3288     0.0     1.2          0.0     0.0     0.0
  1423.            2         5740     0.0     1.3          0.0     0.0     0.0
  1424.            4        10234     0.1     1.4          0.0     0.0     0.0
  1425.            8        21217     0.2     1.5          0.1     0.0     0.0
  1426.           16        67144     0.6     2.1          0.9     0.0     0.0
  1427.           32       231970     1.9     4.0          5.8     0.0     0.0
  1428.           64       282079     2.3     6.3         14.3     0.0     0.0
  1429.          128       278731     2.3     8.6         26.1     0.0     0.0
  1430.          256       512897     4.2    12.9         95.1     0.0     0.1
  1431.          512      1284617    10.6    23.5        566.7     0.2     0.3
  1432.         1024      1808526    14.9    38.4       1442.8     0.6     0.8
  1433.         2048      2397908    19.8    58.1       3554.1     1.4     2.2
  1434.         4096      1717869    14.2    72.3       4966.8     1.9     4.1
  1435.         8192      1144688     9.4    81.7       6646.6     2.6     6.7
  1436.        16384       865126     7.1    88.9      10114.5     3.9    10.6
  1437.        32768       574651     4.7    93.6      13420.4     5.2    15.8
  1438.        65536       348280     2.9    96.5      16162.6     6.2    22.0
  1439.       131072       194864     1.6    98.1      18079.7     7.0    29.0
  1440.       262144       112967     0.9    99.0      21055.8     8.1    37.1
  1441.       524288        58644     0.5    99.5      21523.9     8.3    45.4
  1442.      1048576        32286     0.3    99.8      23652.5     9.1    54.5
  1443.      2097152        16140     0.1    99.9      23230.4     9.0    63.5
  1444.      4194304         7221     0.1   100.0      20850.3     8.0    71.5
  1445.      8388608         2475     0.0   100.0      14042.0     5.4    77.0
  1446.     16777216          991     0.0   100.0      11378.8     4.4    81.3
  1447.     33554432          479     0.0   100.0      11456.1     4.4    85.8
  1448.     67108864          258     0.0   100.0      12555.9     4.8    90.6
  1449.    134217728           61     0.0   100.0       5633.3     2.2    92.8
  1450.    268435456           29     0.0   100.0       5649.2     2.2    95.0
  1451.    536870912           12     0.0   100.0       4419.1     1.7    96.7
  1452.   1073741824            7     0.0   100.0       5004.5     1.9    98.6
  1453.   2147483647            3     0.0   100.0       3620.8     1.4   100.0
  1454.  
  1455. A number of observations can be made:
  1456.   - the distribution is heavily skewed towards small files
  1457.   - but it has a very long tail
  1458.   - the average file size is 22k
  1459.   - pick a file at random: it is probably smaller than 2k
  1460.   - pick a byte at random: it is probably in a file larger than 512k
  1461.   - 89% of files take up 11% of the disk space
  1462.   - 11% of files take up 89% of the disk space
  1463.  
  1464. Such a heavily skewed distribution of file sizes suggests that, if one
  1465. were to design a file system from scratch, it might make sense to
  1466. employ radically different strategies for small and large files.
  1467.  
  1468. The seductive power of mathematics allows us treat a 200 byte and a
  1469. 2MB file in the same way.  But do we really want to?  Are there any
  1470. problems in engineering where the same techniques would be used in
  1471. handling physical objects that span 6 orders of magnitude?
  1472.  
  1473. A quote from sci.physics that has stuck with me: `When things change
  1474. by 2 orders of magnitude, you are actually dealing with fundamentally
  1475. different problems'.
  1476.  
  1477. People I trust say they would have expected the tail of the above
  1478. distribution to have been even longer.  There are at least some files
  1479. in the 1-2G range.  They point out that DBMS shops with really large
  1480. files might have been less inclined to respond to a survey like this
  1481. than some other sites.  This would bias the disk space figures, but it
  1482. would have no appreciable effect on file counts.  The results gathered
  1483. would still be valuable because many static disk layout issues are
  1484. determined by the distribution of small files and are largely
  1485. independent of the potential existence of massive files.
  1486.  
  1487. (It should be noted that many popular DBMSs, such as Oracle, Sybase,
  1488.  and Informix, use raw disk partitions instead of Unix file systems
  1489.  for storing data, hence the difficulty in gathering data about them
  1490.  in a uniform way.)
  1491.  
  1492. ------------------------------
  1493. Subject: [2.3.2] Block sizes
  1494. From: Performance and workload studies
  1495.  
  1496. The last block of a file is normally only partially occupied, and so
  1497. as block sizes are increased so too will the the amount of wasted disk
  1498. space.
  1499.  
  1500. The following historical values for the design of the BSD FFS are
  1501. given in `Design and implementation of the 4.3BSD Unix operating
  1502. system':
  1503.  
  1504. fragment size   overhead
  1505.    (bytes)        (%)
  1506.       512         4.2
  1507.      1024         9.1
  1508.      2048        19.7
  1509.      4096        42.9
  1510.  
  1511. Files have clearly gotten larger since then; I obtained the following
  1512. results:
  1513. fragment size   overhead
  1514.    (bytes)        (%)
  1515.       128         0.3
  1516.       256         0.6
  1517.       512         1.1
  1518.      1024         2.5
  1519.      2048         5.4
  1520.      4096        12.3
  1521.      8192        27.8
  1522.     16384        61.2
  1523.  
  1524. By default the BSD FFS typically uses a 1k fragment size.  Perhaps
  1525. this size is no longer optimal and should be increased.
  1526.  
  1527. (The FFS block size is constrained to be no more than 8 times the
  1528.  fragment size.  Clustering is a good way to improve throughput for
  1529.  FFS based file systems, but it doesn't do very much to reduce the not
  1530.  insignificant FFS computational overhead.)
  1531.  
  1532. It is interesting to note that even though most files are less than 2K
  1533. in size, having a 2K block size wastes very little space, because disk
  1534. space consumption is so totally dominated by large files.
  1535.  
  1536. ------------------------------
  1537. Subject: [2.3.3] Inode ratios
  1538. From: Performance and workload studies
  1539.  
  1540. The BSD FFS statically allocates inodes.  By default one inode is
  1541. allocated for every 2K of disk space.  Since an inode consumes 128
  1542. bytes this means that by default 6.25% of disk space is consumed by
  1543. inodes.
  1544.  
  1545. It is important not to run out of inodes since any remaining disk
  1546. space is then effectively wasted.  Despite this allocating 1 inode for
  1547. every 2K is excessive.
  1548.  
  1549. For each file system studied I worked out the minimum sized disk it
  1550. could be placed on.  Most disks needed to be only marginally larger
  1551. than the size of their files, but a few disks, having much smaller
  1552. files than average, needed a much larger disk---a small disk had
  1553. insufficient inodes.
  1554.  
  1555. bytes per   overhead
  1556.   inode       (%)
  1557.    1024      12.5
  1558.    2048       6.3
  1559.    3072       4.5
  1560.    4096       4.2
  1561.    5120       4.4
  1562.    6144       4.9
  1563.    7168       5.5
  1564.    8192       6.3
  1565.    9216       7.2
  1566.   10240       8.3
  1567.   11264       9.5
  1568.   12288      10.9
  1569.   13312      12.7
  1570.   14336      14.6
  1571.   15360      16.7
  1572.   16384      19.1
  1573.   17408      21.7
  1574.   18432      24.4
  1575.   19456      27.4
  1576.   20480      30.5
  1577.  
  1578. Clearly, the current default of one inode for every 2K of data is too
  1579. small.  Earlier results suggested that allocating one inode for every
  1580. 5-6k was in some sense optimal, and allocating one inode for every 8k
  1581. would only be 0.4% worse.  The new data suggests one inode for every
  1582. 4k is optimal, and allocating one inode for every 8k would be 2.1%
  1583. worse.
  1584.  
  1585. The analysis technique I used is very sensitive to even a few file
  1586. systems with very small files.
  1587.  
  1588. The main source of file systems with lots of small files would appear
  1589. to be netnews servers.  The typical Usenet message would appear to be
  1590. 1-2k in length.  Ignoring such file systems would drastically alter
  1591. the conclusions I reach.  If, as I believe might already be the case,
  1592. news servers are manually tuned to have a lower than normal bytes per
  1593. inode ratio, it would then be possible to justify setting the default
  1594. ratio much higher.
  1595.  
  1596. Clearly it is best if the file system dynamically allocate inodes; I
  1597. believe AIX does this for instance.  Systems that statically allocate
  1598. inodes should probably increase the bytes per inode ratio, but it is
  1599. not clear to exactly what value.  The engineer in me says `it is
  1600. important to play this one conservatively: stick to 6k', the artist
  1601. goes `as Chris Torek says: aesthetics, 8k'.
  1602.  
  1603.  
  1604.  
  1605. ------------------------------
  1606. Subject: [3] Papers, reports, and bibliographies
  1607. From: Papers, reports, and bibliographies
  1608.  
  1609. Network-available documents are listed in this section.  I'd like to
  1610. see information for obtaining other sets of reports which aren't
  1611. electronically-available included here as well, at some stage.
  1612.  
  1613. ------------------------------
  1614. Subject: [3.1] From where are papers for distributed systems available?
  1615. From: Papers, reports, and bibliographies
  1616.  
  1617. Amoeba
  1618.     ftp.cs.vu.nl:amoeba
  1619.     ftp.cse.ucsc.edu:pub/amoeba
  1620.  
  1621. Arjuna
  1622.     arjuna.ncl.ac.uk:pub/Arjuna
  1623.  
  1624. Choices
  1625.     choices.cs.uiuc.edu:Papers
  1626.  
  1627. Chorus
  1628.     ftp.chorus.fr:pub/chorus-reports
  1629.     cse.ogi.edu:pub/chorus/reports
  1630.  
  1631. Clouds
  1632.     helios.cc.gatech.edu:pub/papers
  1633.  
  1634. Cronus
  1635.     pineapple.bbn.com:doc
  1636.  
  1637. Guide
  1638.     ftp.imag.fr:pub/GUIDE/doc
  1639.  
  1640. Horus
  1641.     ftp.cs.cornell.edu:pub/Horus
  1642.  
  1643. Isis
  1644.     ftp.cse.ucsc.edu:pub/bib/isis.bib
  1645.     ftp.cs.cornell.edu:pub
  1646.  
  1647. Mach
  1648.     mach.cs.cmu.edu:doc
  1649.  
  1650. Plan 9
  1651.     plan9.att.com:dist/plan9doc
  1652.     http://www.ecf.toronto.edu/plan9
  1653.     plan9.att.com:dist/plan9man
  1654.  
  1655. Spring
  1656.     http://www.sun.com/technology-research/spring
  1657.  
  1658. X kernel
  1659.     cs.arizona.edu:pub/xkernel
  1660.  
  1661. Papers covering Amoeba, Choices, Chorus, Clouds, the Hurd, Guide,
  1662. Mach, Mars, NonStop, and Plan 9 are also available via anonymous ftp
  1663. from ftp.funet.fi:pub/doc/OS.
  1664.  
  1665. [I'd like to find the authoritative home for V---Mars and NonStop are
  1666.  a bit more obscure, I think; they certainly aren't asked after much]
  1667.  
  1668. ------------------------------
  1669. Subject: [3.2] Where can I find other papers?
  1670. From: Papers, reports, and bibliographies
  1671.  
  1672. Angel
  1673.     ftp.cs.city.ac.uk:papers
  1674.  
  1675. Mungi
  1676.     ftp.vast.unsw.edu.au:pub/Mungi
  1677.  
  1678. KeyKOS
  1679.     cs.dartmouth.edu:pub/sasos/papers/KeyKOS
  1680.  
  1681. QNX [93-09-19-22-22.26]
  1682.     ftp.cse.ucsc.edu:pub/qnx
  1683.     ftp.qnx.com:pub/papers
  1684.  
  1685. Solaris 2.x [93-02-23-12-12.43]
  1686.     opcom.sun.ca:pub/docs/papers
  1687.     opcom.sun.ca:pub/docs/solaris
  1688.  
  1689. Windows NT [92-09-18-11-46.16]
  1690.     ftp.uu.net:vendor/microsoft/win32-api
  1691.     ftp.uu.net:vendor/microsoft/isv-communications
  1692.  
  1693. ------------------------------
  1694. Subject: [3.3] Where can I find bibliographies?
  1695. From: Papers, reports, and bibliographies
  1696.  
  1697. Load balancing
  1698.     ftp.cse.ucsc.edu:pub/bib/load-balancing.bib
  1699.  
  1700. Mobile computing
  1701.     ftp.comp.lancs.ac.uk:pub/mpg
  1702.  
  1703. Multimedia operating systems [94-04-15-23-29.51]
  1704.     cs.ucsd.edu:pub/multimedia
  1705.     ftp.cse.ucsc.edu:pub/bib/mmos.bib
  1706.  
  1707. Object-oriented operating systems
  1708.     ftp.cse.ucsc.edu:pub/bib/ooos.bib.Z
  1709.     ftp.inria.fr:INRIA/bib/ooos.bib.gz
  1710.  
  1711. Parallel and distributed I/O
  1712.     ftp.cse.ucsc.edu:pub/bib/io.bib
  1713.  
  1714. Recommended books
  1715.     ftp.maths.tcd.ie:pub/bosullvn/comp.os.research/recommended.bib
  1716.  
  1717. Sprite network operating system
  1718.     sprite.berkeley.edu:pub/sprite
  1719.  
  1720. See also the section on General Net Resources.
  1721.  
  1722. [There's quite a lot more at ftp.cse.ucsc.edu:pub/bib, if anyone
  1723.  wants to add more to this list.]
  1724.  
  1725.  
  1726.  
  1727. ------------------------------
  1728. Subject: [4] General Internet-accessible resources
  1729. From: General Internet-accessible resources
  1730.  
  1731. This section contains information about a variety of services
  1732. available to the OS research community via the Internet.
  1733.  
  1734. ------------------------------
  1735. Subject: [4.1] Wide Area Information Service (WAIS) and World-Wide Web (WWW) servers
  1736. From: General Internet-accessible resources
  1737.  
  1738. [92-09-21-16-38.23] Loughborough University high-performance
  1739. networking and distributed systems archive may be accessed via World
  1740. Wide Web at http://hill.lut.ac.uk/DS-Archive/.  This archive contains,
  1741. according to Jon Knight <J.P.Knight@lut.ac.uk>, the organiser:
  1742.  
  1743. - Technical reports and papers written at LUT by the networks and
  1744.   distributed systems researchers in the Department of Computer
  1745.   Studies.
  1746.  
  1747. - Technical reports, papers and theses which have been produced at
  1748.   other sites and then made available for public electronic access.
  1749.  
  1750. - Software which is of use in research or which has been produced by a
  1751.   specific research project.
  1752.  
  1753. - Details of relevant conferences, collected from a variety of sources
  1754.   (USENET, email, flyers, etc).
  1755.  
  1756. - Information on ongoing research projects.
  1757.  
  1758. - Bibliographies that have been generated for research at LUT and also
  1759.   access to other WAIS indexed bibliographies, both at LUT and
  1760.   elsewhere.
  1761.  
  1762. - A list of contacts in the field, with details of their research
  1763.   interests.  This is entirely voluntary (i.e. people have agreed to
  1764.   Jon entering their details rather than him just rooting round the
  1765.   Internet to build up the information).
  1766.  
  1767. Carnegie Mellon University's computer science department has a home
  1768. page for the Mach project at the following URL:
  1769. http://www.cs.cmu.edu:8001/afs/cs.cmu.edu/project/mach/public/www/mach.html.
  1770.  
  1771. Bibliographies in the comp.os.research collection are accessible via
  1772. WAIS from UCSC.
  1773.     (:source 
  1774.      :version  3 
  1775.      :ip-address "128.114.134.19"
  1776.      :ip-name "ftp.cse.ucsc.edu"
  1777.      :tcp-port 210
  1778.      :database-name "os-bibliographies"
  1779.      :cost 0.00 
  1780.      :cost-unit :free 
  1781.      :maintainer "paul@cse.ucsc.edu"
  1782.      :description "Server created with WAIS release 8 b5
  1783.         on Jul 9 22:38:27 1992 by paul@cse.ucsc.edu
  1784.         The files of type bibtex used in the index
  1785.         were: /home/ftp/pub/bib"
  1786.     )
  1787.  
  1788.  
  1789. ------------------------------
  1790. Subject: [4.2] Refdbms---a distributed bibliographic database system
  1791. From: General Internet-accessible resources
  1792.  
  1793. [92-10-01-11-39.32] The 13th alpha release of refdbms version 3,
  1794. developed by John Wilkes of the Concurrent Systems Project at
  1795. Hewlett-Packard Laboratories and Richard Golding of the Concurrent
  1796. Systems Laboratory at UC Santa Cruz, is now available.  It can be
  1797. obtained by anonymous ftp from ftp.cse.ucsc.edu:pub/refdbms.  The
  1798. system has been tested on Sun 3 and 4 systems running SunOS 4.1.x, and
  1799. on DECstations running Ultrix 4.1.  It is an experiment in building
  1800. weak-consistency wide-area distributed applications, and the databases
  1801. currently available for the system have a good systems coverage.
  1802.  
  1803. The system includes tools to query the database, to produce
  1804. bibliographies for LaTeX documents, and to enter new references into
  1805. the database.  It is part of ongoing research into wide-area
  1806. distributed information systems on the Internet.
  1807.  
  1808. Features include:
  1809.  
  1810. - Distributed databases: a reference database can be shared among
  1811.   multiple sites.  Updates can be entered at any site, and will be
  1812.   propagated to the other sites holding a replica of the database.
  1813.  
  1814. - Multiple databases: every database has a name, and users specify the
  1815.   order in which databases will be searched.
  1816.  
  1817. - Private databases: databases can be private, available site-wide, or
  1818.   they can be made available to other sites.
  1819.  
  1820. - Database query by keyword, author, and title word.
  1821.  
  1822. - Translator for refer-format databases.
  1823.  
  1824. - Usable with LaTeX documents: the internal refdbms format can be
  1825.   translated into a special BibTeX format.
  1826.  
  1827. An up-to-date list of bibliographies exported by various institutions
  1828. may be obtained using anonymous ftp from
  1829. ftp.cse.ucsc.edu:pub/refdbms/current-databases.
  1830.  
  1831.  
  1832. ------------------------------
  1833. Subject: [4.3] Willow -- the information looker-upper
  1834. From: General Internet-accessible resources
  1835.  
  1836. The University of Washington's Willow system provides a Motif-based
  1837. user interface to a heterogeneous collection of on-line bibliographic
  1838. databases.  It will compile and run on most systems which provide a
  1839. Motif library.
  1840.  
  1841. For further information, see the Willow home page at
  1842. http://www.cac.washington.edu/willow/home.html.
  1843.  
  1844.  
  1845. ------------------------------
  1846. Subject: [4.4] Computer science bibliographies and technical reports
  1847. From: General Internet-accessible resources
  1848.  
  1849. - A collection of bibliographies in various fields of computer science
  1850.   is available via anonymous ftp and the World Wide Web.  The
  1851.   bibliographies contain about 260,000 references, most of which are
  1852.   references to journal articles, conference papers or technical
  1853.   reports.  The collection has been formed by using various freely
  1854.   accessible services in the Internet (anonymous ftp, mailserver,
  1855.   wais, telnet) and converting each bibliography into a uniform BibTeX
  1856.   format.  It is organised in files containing references to a (more
  1857.   or less) specific area within computer science.
  1858.  
  1859.   The database has been organised by Alf-Christian Achilles
  1860.   <achilles@ira.uka.de>.  It may be accessed on the Web at
  1861.   http://www.ira.uka.de/ftp/ira/bibliography/index.html, via ftp from
  1862.   ftp.cs.umanitoba.ca:pub/bibliographies, and through a more
  1863.   useful search mechanism on the Web at
  1864.   http://glimpse.cs.arizona.edu:1994/bib.
  1865.  
  1866. - As part of the ARPA Electronic Library Project, the Database Group
  1867.   at Stanford is providing a Selective Dissemination of Information
  1868.   (SDI) service to disseminate information about computer science
  1869.   technical reports.  You can have a server email you periodic
  1870.   announcements of new papers on topics that interest you.
  1871.  
  1872.   See http://cs-tr.cs.cornell.edu/Info/cstr.html for details, or
  1873.   contact Tak Yan <tyan@cs.stanford.edu> or the mail server itself at
  1874.   elib@db.stanford.edu.
  1875.  
  1876.  
  1877. ------------------------------
  1878. Subject: [4.5] The comp.os.research archive
  1879. From: General Internet-accessible resources
  1880.  
  1881. [93-02-18-21-18.31] An archive of all messages posted to
  1882. comp.os.research since 1988 is maintained at UC Santa Cruz.  It may be
  1883. accessed via anonymous ftp at
  1884. ftp.cse.ucsc.edu:pub/comp.os.research.  The archive is organised
  1885. by year.
  1886.  
  1887. Postings may also be found via WAIS at UCSC's Computer Science gopher
  1888. hole:
  1889.     (:source 
  1890.      :version  3 
  1891.      :ip-address "128.114.134.19"
  1892.      :ip-name "ftp.cse.ucsc.edu"
  1893.      :tcp-port 210
  1894.      :database-name "comp-os-research"
  1895.      :cost 0.00 
  1896.      :cost-unit :free 
  1897.      :maintainer "paul@cse.ucsc.edu"
  1898.  
  1899.      :description "Server created with WAIS release 8 b5
  1900.         on Jul 9 03:51:11 1992 by paul@cse.ucsc.edu
  1901.         The files of type netnews used in the index
  1902.         were: /home/ftp/pub/comp.os.research"
  1903.     )
  1904.  
  1905.  
  1906. ------------------------------
  1907. Subject: [4.6] Miscellaneous resources
  1908. From: General Internet-accessible resources
  1909.  
  1910. - Paul Harrington <phrrngtn@dcs.st-andrews.ac.uk> maintains a World
  1911.   Wide Web page on checkpointing, at
  1912.   http://warp.dcs.st-and.ac.uk/warp/systems/checkpoint.
  1913.  
  1914.  
  1915. ------------------------------
  1916. Subject: [5] Disclaimer and copyright
  1917. From: Disclaimer and copyright
  1918.  
  1919. Note that this document is provided as is.  The information in it is
  1920. not warranted to be correct; you use it at your own risk.
  1921.  
  1922. Following recent reports on the <faq-maintainers> list I think it wise
  1923. to change the copyright:
  1924.  
  1925. NOTICE OF COPYRIGHT AND PERMISSIONS
  1926.  
  1927. Answers to Frequently Asked Questions for comp.os.research (hereafter
  1928. referred to as These Articles) are Copyright (C) 1993, 1994, and 1995
  1929. by Bryan O'Sullivan <bosullvn@tcd.ie>.  They may be reproduced and
  1930. distributed in whole or in part, subject to the following conditions:
  1931.  
  1932. - This copyright and permission notice must be retained on all
  1933.   complete or partial copies of These Articles.
  1934.  
  1935. - These Articles may be copied or distributed in part or in full for
  1936.   personal or educational use.  Any translation, derivative work, or
  1937.   copies made for other purposes must be approved by the copyright
  1938.   holder before distribution, unless otherwise stated.
  1939.  
  1940. - If you distribute These Articles, instructions for obtaining the
  1941.   complete current versions of them free or at cost price must be
  1942.   included.  Redistributors must make reasonable efforts to maintain
  1943.   current copies of These Articles.
  1944.  
  1945. Exceptions to these rules may be granted, and I shall be happy to
  1946. answer any questions about this copyright notice -- write to Bryan
  1947. O'Sullivan, 14 Pleasant Drive, Mount Pleasant, Waterford, Ireland or
  1948. email <bosullvn@tcd.ie>.  These restrictions are here to protect the
  1949. contributors, not to restrict you as educators and learners.
  1950. Archive-name: os-research/part3
  1951. Version: $Revision: 1.2 $
  1952. Last-Modified: $Date: 1995/02/03 14:32:27 $
  1953.  
  1954.         Answers to frequently asked questions
  1955.           for comp.os.research: part 3 of 3
  1956.  
  1957.                Copyright (C) 1994, 1995
  1958.                Bryan O'Sullivan
  1959.  
  1960.  
  1961.  
  1962.               TABLE OF CONTENTS
  1963.  
  1964.  
  1965. 1.     Distributed systems
  1966. 1.1.   What is the current status of the (insert name) project?
  1967. 1.2.   How do approaches to load balancing differ?
  1968. 1.3.   Fault tolerance in distributed systems
  1969. 1.4.   Naming in distributed systems
  1970. 1.5.   Distributed shared memory
  1971. 1.5.1. Data consistency
  1972. 1.5.1.1. Strictly consistent systems
  1973. 1.5.1.2. Relaxing consistency
  1974. 1.5.1.3. Application-specific coherence
  1975. 1.5.2. Access synchronisation
  1976. 1.5.3. Transfer and caching granularity
  1977. 1.5.4. Address space structure
  1978. 1.5.5. Fault tolerance
  1979. 1.5.6. A brief bibliography on distributed shared memory
  1980. 1.6.   What have we learned?
  1981.  
  1982. 2.     Needful things
  1983.  
  1984.  
  1985.  
  1986. ------------------------------
  1987. Subject: [1] Distributed systems
  1988. From: Distributed systems
  1989.  
  1990. A great deal of the high-profile research carried out in operating
  1991. systems these days deals with distributed computing.  Not
  1992. surprisingly, discussions of distributed systems make up a large
  1993. amount of the traffic on comp.os.research.
  1994.  
  1995. ------------------------------
  1996. Subject: [1.1] What is the current status of the (insert name) project?
  1997. From: Distributed systems
  1998.  
  1999. See the section on `available software' for information on
  2000. distributions of some of the systems mentioned here.
  2001.  
  2002. - The Amoeba project is still going.  There are roughly 20 people
  2003.   working on it, but most of these are no longer kernel hackers.  They
  2004.   are working on using it for parallel programming, wide-area
  2005.   distributed systems, and other things.  Amoeba is used in over 100
  2006.   universities at the moment, and is also used at commercial
  2007.   institutions.
  2008.  
  2009. - Cronus is still under development at BBN.  The current public
  2010.   release is 3.0.  The project currently has two thrusts---as the base
  2011.   for advanced distributed system R&D, and as a platform for
  2012.   constructing and deploying sophisticated distributed applications.
  2013.  
  2014.   Ongoing research topics include the integration of Cronus and Mach
  2015.   technology, the exploration of techniques for the construction of
  2016.   WAN-based and multi-organisational applications, investigation into
  2017.   the integration of distributed systems and network management
  2018.   systems, and work in high-performance distributed computing.
  2019.  
  2020. - Horus is being developed by the same group that worked on Isis; the
  2021.   head of this group is Robbert van Renesse.
  2022.  
  2023. - Isis is no longer being developed at Cornell; it is now managed as a
  2024.   commercial product.
  2025.  
  2026. - Mach: awaiting response from rfr
  2027.  
  2028. - Plan 9 is currently being restructured to make good use of a 300MBPS
  2029.   fibre-optic network.  A general release of the system is under
  2030.   consideration at the moment.
  2031.  
  2032. - QNX is a commercial POSIX-certified realtime OS with an installed
  2033.   base of over 250,000 systems.  It is used extensively in process
  2034.   control, factory automation, medical instrumentation, communications
  2035.   and point-of-sale.  A number of universities are also doing research
  2036.   with QNX.
  2037.  
  2038. - The Sprite network operating system project is winding down.  The
  2039.   user community is shrinking, and only three people are currently
  2040.   using the system as a basis for graduate research.  Sprite is
  2041.   continuing to be used as the testbed for the Berkeley RAID project.
  2042.  
  2043. ------------------------------
  2044. Subject: [1.2] How do approaches to load balancing differ?
  2045. From: Distributed systems
  2046.  
  2047. Load-balancing policy falls into two broad groups: static and dynamic.
  2048. Static policies use algorithms which operate without regard to
  2049. run-time loads across a system, while dynamic policies use the
  2050. run-time performance of various parts of a system in order to make
  2051. more `informed' decisions about balancing.
  2052.  
  2053. [92-11-06-12-53.57] A dynamic load-balancing policy is one which uses
  2054. run-time state information in making scheduling decisions.
  2055.  
  2056. There are two kinds of dynamic policies: adaptive and non-adaptive.
  2057. The latter always use the same (fixed, load-dependent) policy; the
  2058. former may adjust policy parameters in order to gradually improve
  2059. their performance.
  2060.  
  2061. The key point is that while non-adaptive policies use only the
  2062. information about the run-time state, adaptive policies use, in
  2063. addition to this, information about current performance.
  2064.  
  2065. In adaptive policies, the rules for adjusting policy parameters may be
  2066. static or dynamic.  An example of the former might be: `shift to a
  2067. conservative migration rule when system-wide load patterns are varying
  2068. too rapidly'.  An example of the latter could be: `increase
  2069. sender-side threshold when migrated jobs cause slowdown rather than
  2070. speedup'.  Some researchers refer to the performance-driven adaptation
  2071. exhibited by the second policy as `learning'.
  2072.  
  2073. Since both non-adaptive policies and adaptive policies with static
  2074. rules really use only load information, it is confusing to distinguish
  2075. between them.  One way to avoid such confusion is to restrict the use
  2076. of the word `adaptive' to policies that use performance feedback in
  2077. order to drive their adjustment of policy parameters.
  2078.  
  2079. ------------------------------
  2080. Subject: [1.3] Fault tolerance in distributed systems
  2081. From: Distributed systems
  2082.  
  2083. One approach to providing fault tolerance in distributed systems
  2084. involves the use of redundant services, such that standby facilities
  2085. can become active in the event of the failure of, or loss of
  2086. connection to, a primary service.
  2087.  
  2088. Another approach is to provide multiple paths of connectivity between
  2089. the computers that make up the distributed system.  The QNX system,
  2090. for example, supports multiple network drivers per node.  The purpose
  2091. of the network connection under QNX is to merge the microkernels on
  2092. the LAN into a single logical kernel.  Hence, if multiple LAN
  2093. connections per node are present, the networking code can load balance
  2094. the LAN traffic on the paths available.  It can also route around
  2095. failed links, providing both greater LAN bandwidth and better fault
  2096. tolerance.
  2097.  
  2098. See below for treatment of fault tolerance in systems which make use
  2099. of distributed shared memory.
  2100.  
  2101. ------------------------------
  2102. Subject: [1.4] Naming in distributed systems
  2103. From: Distributed systems
  2104.  
  2105. [Material on naming and/or global naming sought.]
  2106.  
  2107. ------------------------------
  2108. Subject: [1.5] Distributed shared memory
  2109. From: Distributed systems
  2110.  
  2111. Distributed computer systems have evolved using message passing as
  2112. their main method of communication.  Other communication systems used
  2113. in loosely coupled distributed systems, such as RPC, are usually
  2114. implemented on top of an underlying message passing system.  On the
  2115. other hand, in tightly coupled systems, such as a multi-processor
  2116. machine, the communication method used is usually shared memory.
  2117.  
  2118. In distributed shared memory (DSM) systems [Nitzberg & Lo, 91],
  2119. processes share data transparently across node boundaries; data
  2120. faulting, location, and movement is handled by the underlying system.
  2121. Among other things, this allows parallel programs designed to use
  2122. shared memory to execute transparently on a loosely coupled
  2123. distributed system.  While the performance implications cannot be
  2124. ignored, the advantages of the shared memory programming model are
  2125. well known:
  2126.  
  2127. - Shared memory programs are usually shorter and easier to understand
  2128.   than equivalent message passing programs.
  2129.  
  2130. - Large or complex data structures may easily be communicated.
  2131.  
  2132. - Shared memory gives transparent process-to-process communication.
  2133.  
  2134. - Programming with shared memory is a well-understood problem.
  2135.  
  2136. Shared-memory (or `procedure-oriented') and message-oriented operating
  2137. systems are, in some sense, equivalent [Lauer & Needham, 78], though
  2138. it has been claimed that the former are `more powerful' [Tam et al.,
  2139. 90].
  2140.  
  2141. ------------------------------
  2142. Subject: [1.5.1] Data consistency
  2143. From: Distributed systems
  2144.  
  2145. Despite recent advances in both local and wide-area networking
  2146. technologies, network latency is still a major factor in distributed
  2147. systems and likely to remain so.  All DSM systems provide some sort of
  2148. caching in an attempt to improve the performance beyond that provided
  2149. by doing a network access on every reference to a non-local data item.
  2150. Each system must decide whether or not to attempt to keep the data
  2151. coherent, and, if so, what coherence strategy to use.  The coherence
  2152. semantics which may be provided to the programmer include:
  2153.  
  2154. - `strict' consistency, where a read always returns the value written
  2155.   by the most recent write
  2156.  
  2157. - a `loosely' consistent system where the system enforces some form of
  2158.   weak consistency guarantees and the application (or compiler or
  2159.   user) can indicate synchronisation points where consistency must be
  2160.   enforced;
  2161.  
  2162. - no automatic consistency mechanism, but provide the user with the
  2163.   facilities necessary to implement user level synchronisation and
  2164.   consistency.
  2165.  
  2166. ------------------------------
  2167. Subject: [1.5.1.1] Strictly consistent systems
  2168. From: Distributed systems
  2169.  
  2170. Older, strictly consistent systems tend to enforce a single writer,
  2171. multiple reader model, where at any time data will be held either at a
  2172. single node (which may have write access) or several nodes (none of
  2173. which may have write access).
  2174.  
  2175. Given this model, we must be able to locate a copy of our data when it
  2176. is not resident.  The method most frequently used is to assign an
  2177. `owner' to each item of data, where the owner has either the only
  2178. writeable copy of the data, or one of the read-only copies.  Ownership
  2179. may remain fixed throughout the life of a datum, or it may change
  2180. dynamically.  In the latter case, the problem arises of locating the
  2181. owner.  A database of locations may be maintained by centralised
  2182. managers, or ownership information can be distributed among nodes of
  2183. the system [Li and Hudak, 89].
  2184.  
  2185. In a strictly consistent system, we must also be able to synchronise
  2186. writes.  The two major solutions to this problem are:
  2187.  
  2188. - Write broadcast.  The effects of every write are broadcast to ever
  2189.   node that has a copy of the data being written; this effectively
  2190.   implements a replication algorithm.  Write broadcast is usually
  2191.   considered too expensive to be used as a general solution.
  2192.  
  2193. - Write invalidation.  Each node in the system holding a read-only
  2194.   copy of the data being written is sent an invalidation message.
  2195.  
  2196. ------------------------------
  2197. Subject: [1.5.1.2] Relaxing consistency
  2198. From: Distributed systems
  2199.  
  2200. Permitting temporary inconsistencies is a common method of increasing
  2201. performance in distributed systems.  Memory is said to be loosely
  2202. coherent if the value returned by a read operation is the value
  2203. written by an update operation to the same object that `could' have
  2204. immediately preceded the read operation in some legal schedule of the
  2205. threads in execution [Bennett et al., 90].
  2206.  
  2207. Using loose coherence, more than one thread may have write access to
  2208. the same object, provided that the programmer knows that the writes
  2209. will not conflict.
  2210.  
  2211. Another memory consistency model is `release consistency'
  2212. [Gharachorloo et al., 90], in which memory accesses are divided into
  2213. ordinary and synchronisation-related accesses.  The latter are further
  2214. divided into `acquire' and `release' operations.  The `acquire'
  2215. operation indicates that shared data is needed, and a processor's
  2216. updates are not guaranteed to be performed at other nodes until a
  2217. `release' is performed.  The primary advantage of this form of
  2218. consistency is that it allows consistency updates to be tied to
  2219. synchronisation events, and therefore to be delayed until actually
  2220. needed by applications.  However, most release consistent systems
  2221. require the programmer to make explicit use of `acquire' and `release'
  2222. operations.
  2223.  
  2224. A DSM system called Midway introduces another new consistency model,
  2225. `entry consistency' [Bershad et al., 93].  Entry consistency is weaker
  2226. than many of the other models suggested, including release
  2227. consistency; it requires explicit annotations to associate
  2228. synchronisation objects and data.  On an `acquire', only the data
  2229. associated with the synchronisation object is guaranteed to be
  2230. consistent.  This extra weakness permits higher performance
  2231. implementations of the underlying consistency protocols to be written.
  2232. Midway also supports stronger consistency models, so that the
  2233. application programmer can trade-off performance against the extra
  2234. effort required to write entry consistent programs.
  2235.  
  2236. ------------------------------
  2237. Subject: [1.5.1.3] Application-specific coherence
  2238. From: Distributed systems
  2239.  
  2240. From [Cheriton, 86]:
  2241.   `Problem-oriented shared memory' is a shared memory that implements
  2242.   fetch and store operations specialised to the particular problem or
  2243.   application it is supporting.  In particular, a problem-oriented
  2244.   shared memory commonly provides a specialised form of consistency
  2245.   and consistency maintenance that exploits application-specific
  2246.   semantics.
  2247. Cheriton goes on to propose that consistency constraints be relaxed
  2248. and more use be made of problem semantics.  He suggests that, in some
  2249. cases, stale data may be detected on use by the client, and the client
  2250. may then recover.  A example would be hint caching.  In some
  2251. applications, stale data may actually be sufficiently accurate,
  2252. provided that the client can obtain up to date information when
  2253. necessary.  In other applications, some data may be optional in the
  2254. sense that the client can continue without it.  Other applications may
  2255. tolerate having the results of store operations being lost or undone,
  2256. for example, an application that regularly updates the entire data
  2257. set.
  2258.  
  2259. Another approach is presented by the designers of Munin, where the
  2260. runtime system accepts hints from the compiler or user to determine
  2261. the coherence mechanism to be used for each object.  The default, in
  2262. the absence of hints, is to use a general read-write consistency
  2263. mechanism, much like that employed by IVY.  Munin supports several
  2264. different object types that are based on the results of a survey of
  2265. shared memory access characteristics.  The results of the survey
  2266. showed that a very small percentage of all accesses to shared data
  2267. fall under the general read-write type.  The Munin designers also note
  2268. that a program moves through various stages of execution, and the
  2269. types associated with objects change as time progresses
  2270.  
  2271. ------------------------------
  2272. Subject: [1.5.2] Access synchronisation
  2273. From: Distributed systems
  2274.  
  2275. Most parallel applications will use some sort of synchronisation
  2276. system to order and control accesses to shared data before actually
  2277. accessing the data.  The most important thing to note in DSM systems
  2278. is that just blindly using standard test and set operations on bytes
  2279. in shared pages will produce a high fault rate; faults are usually
  2280. expensive, making this approach unacceptable.
  2281.  
  2282. Clouds merges locking with the cache consistency protocol, so that the
  2283. user may obtain both a lock and the data in one network transaction.
  2284. This system has the advantage that no invalidation messages are
  2285. required, since the granting of the lock guarantees that there are no
  2286. conflicting copies; it has the disadvantage that an explicit
  2287. unlock/discard operation is required to release access to the data.
  2288. This is acceptable in Clouds, as the DSM system was designed
  2289. specifically to support object invocation, so it is easy to discard on
  2290. a return.
  2291.  
  2292. Munin provides a distributed lock mechanism using `proxy objects' to
  2293. reduce network load.  Proxy objects are maintained by a lock server on
  2294. each node; when a thread wants to obtain a lock on an object, it
  2295. attempts to lock the proxy instead.  The server obtains the global
  2296. lock if it is not already held locally.  Global locking is done by
  2297. negotiating with all the other lock servers in the system.  Each lock
  2298. may be migrated from server to server, and part of the Munin system
  2299. allows objects to be migrated along with their locks.
  2300.  
  2301. Other systems, such as IVY and Mermaid, use modified versions of classic
  2302. multiprocessor synchronisation facilities.
  2303.  
  2304. ------------------------------
  2305. Subject: [1.5.3] Transfer and caching granularity
  2306. From: Distributed systems
  2307.  
  2308. When caching objects in local memory, it is necessary to decide what
  2309. level of granularity to use.  All current systems use a fixed block
  2310. size in the cache, rather than varying the granularity based on object
  2311. size.  Usually this is due to constraints imposed by the system
  2312. hardware and memory management.
  2313.  
  2314. The choice of the block size in the cache depends on several issues.
  2315.  
  2316. - Cost of communication: for example, on many local area networks
  2317.   there is little difference between the time required to send a
  2318.   one-byte message and that required to send a 1024-byte message.
  2319.   Transmitting bulk changes rather than single-byte modifications
  2320.   would therefore seem desirable.
  2321.  
  2322. - The choice of granularity also depends on the locality of reference
  2323.   in the application, as thrashing may occur when two machines are
  2324.   both accessing the same block (this is also known as the `ping-pong
  2325.   effect').  This would seem to argue for a smaller block size.  It
  2326.   should be noted that many object-oriented systems exhibit very poor
  2327.   locality of reference.
  2328.  
  2329. In practice, a compromise must be achieved, as with conventional
  2330. virtual memory systems.  Most systems use a block size which is the
  2331. same as that of the virtual memory management unit on the system, or a
  2332. multiple thereof.  Among other things, it allows the hardware to be
  2333. used to help in the maintenance of consistency.  The choice is
  2334. complicated somewhat when heterogeneous machines are being used, but
  2335. in these cases, the lowest common multiple of hardware supported page
  2336. sizes can usually be used.
  2337.  
  2338. The only major system that doesn't use a large block size is Memnet,
  2339. in which a hardware based DSM system was implemented on a high speed
  2340. token ring; a 32-byte block size was used instead [Delp & Farber].
  2341. The choice of a small block size is appropriate, as the system is much
  2342. closer to a shared memory multi-processor than it is to a software DSM
  2343. system.  This is because the entire processor is blocked on a cache
  2344. miss; the processor is not actually aware of the distributed nature of
  2345. its address space.  Also, the ratio between remote and local memory
  2346. access times is much lower than in the software based systems due to
  2347. the dedicated token ring (200Mbps) and hardware assistance.
  2348.  
  2349. ------------------------------
  2350. Subject: [1.5.4] Address space structure
  2351. From: Distributed systems
  2352.  
  2353. In a single shared address space system, the system appears as a set
  2354. of threads executing in a shared distributed address space.  Objects
  2355. always appear at the same addresses on all nodes.  Single address
  2356. space systems have had a resurgence in popularity with the arrival of
  2357. 64-bit processors.  A number of researchers believe that a 64-bit
  2358. address space is large enough to act as a single global address space
  2359. for all the memory (both primary and secondary) in a distributed
  2360. system.  Examples of such systems include Angel, Mungi, and Opal.
  2361. Security and protection are a major problem in such systems, and
  2362. current approaches either rely on hardware assistance or stochastic
  2363. algorithms, or ignore the problem.
  2364.  
  2365. Another approach is to divide each process's address space into
  2366. different fixed regions, some of which are private and not shared, and
  2367. some of which are shared with some other processes.  Ra, the Clouds
  2368. kernel, takes this approach using O, P, and K address regions, with
  2369. the O region shared between all processes executing in a given object;
  2370. the P and K regions are local to a process and kernel, respectively.
  2371. Here objects always appear at the same address but may not be visible
  2372. from every address space.  By contrast, some systems, including Mirage
  2373. and Mach, allow shared data to exist at differing addresses in
  2374. different processes address spaces.  However, neither system does
  2375. transparent pointer translation, so the address changes are not
  2376. entirely transparent to the application.
  2377.  
  2378. As for the structuring of the shared region itself, some systems --
  2379. for example, IVY and Mether -- use a single flat region: one
  2380. continuous range of virtual addresses represent the shared address
  2381. space and are managed by the DSM system.  This single address space is
  2382. usually sub-divided into pages.  Most systems use paged segmentation:
  2383. the shared region consists of disjoint pieces, which are usually
  2384. managed separately and are not all mapped in any one process.
  2385. Frequently, the segments (sometimes called memory objects, or windows)
  2386. are related to the backing store.  For example, in Clouds, the object
  2387. address space consists of windows onto larger segments; these segments
  2388. are usually maintained on secondary storage.
  2389.  
  2390. ------------------------------
  2391. Subject: [1.5.5] Fault tolerance
  2392. From: Distributed systems
  2393.  
  2394. Most DSM systems ignore the fault tolerance issue or maintain that it
  2395. is an operating system issue and should be handled by the underlying
  2396. system.  However, it would appear that in practice a DSM system would
  2397. strongly effect the fault tolerance of a system.  For example, in a
  2398. system where several systems are sharing access to a set of data, the
  2399. failure of any one of them could lead to the failure of all the
  2400. connected sites (or, at least, some of the processes on each site).
  2401. We are also presented with an unusual failure handling problem.  It is
  2402. fairly easy to see how to handle a failed message or RPC, but how do
  2403. you handle a failed page fault?
  2404.  
  2405. The original Clouds system provided recoverability using shadowing of
  2406. segments and a transactional system using commits.  The recovery
  2407. system was not really integrated with the DSM system and was merely
  2408. implemented at the segment storage site.  In order to maintain a
  2409. consistent view of data when one transaction is active at multiple
  2410. nodes, they have more recently been forced to integrate the
  2411. transaction system with the DSM support system.
  2412.  
  2413. ------------------------------
  2414. Subject: [1.5.6] A brief bibliography on distributed shared memory
  2415. From: Distributed systems
  2416.  
  2417. [Nitzberg & Lo, 1991]
  2418.   Nitzberg, W. and Lo, V., `Distributed shared memory: a survey of
  2419.     issues and algorithms', IEEE Computer, August 91, pp. 52-60
  2420.  
  2421. [Lauer & Needham, 1978]
  2422. [Tam et al., 90]
  2423.   Tam, M.-C., Smith, J. M. & Farber, D. J., `A taxonomy-based
  2424.     comparison of several distributed shared memory systems', ACM
  2425.     Operating Systems Review 24(3), July 90, pp. 40-67
  2426.  
  2427. [Li and Hudak, 89]
  2428.   Li, K. & Hudak, P., `Memory coherence in shared virtual memory
  2429.     systems', ACM Transactions on Computer Systems 7(4), November 89,
  2430.     pp. 321-359
  2431.  
  2432. [Bennett et al., 90]
  2433.   Bennett, J. K., Carter, J. B. & Zwaenopoel, W., `Munin:
  2434.     distributed shared memory based on type-specific memory
  2435.     coherence', Proceedings of the 2nd ACM SIGPLAN Symposium on
  2436.     Principles and Practice of Parallel Programming, SIGPLAN Notices
  2437.     25(3), March 90, pp. 168-176
  2438.  
  2439. [Gharachorloo et al., 90]
  2440.   Gharachorloo, K., et al., `Memory consistency and event ordering in
  2441.     scalable shared-memory multiprocessors', ACM SIGARCH News 18(2),
  2442.     June 90
  2443.  
  2444. [Bershad et al., 93]
  2445.   Bershad, B. N., et al., `The Midway distributed shared memory
  2446.     system', Technical Report CMU-CS-93-119, School of Computer
  2447.     Science, Carnegie Mellon University, 1993.  Available via
  2448.     anonymous ftp from
  2449.     ftp.cs.cmu.edu:project/mach/public/doc/published/midway.ps.
  2450.  
  2451. [Cheriton, 86]
  2452.   Cheriton, D. R., `Problem-oriented shared memory: a decentralized
  2453.     approach to distributed system design', Proceedings of the 6th
  2454.     International Conference on Distributed Computing Systems, May 86,
  2455.     pp. 190-197
  2456.  
  2457. [Delp & Farber]
  2458.   Delp, G. S. & Farber, D. J., `Memnet -- a different approach to a
  2459.     network', Technical Report, Department of Electrical Engineering,
  2460.     University of Delaware, ???
  2461.  
  2462.  
  2463. ------------------------------
  2464. Subject: [1.6] What have we learned?
  2465. From: Distributed systems
  2466.  
  2467. Andy Tanenbaum started a (very long) thread on this topic in
  2468. comp.os.research in April of 1992 [92-04-03-17-10.05].  The interested
  2469. reader is directed to the comp.os.research archives, since this thread
  2470. proved rather divisive (i.e. nobody really agreed on any issue).
  2471.  
  2472.  
  2473. ------------------------------
  2474. Subject: [2] Needful things
  2475. From: Needful things
  2476.  
  2477. This FAQ is incomplete, and will probably remain in this state to a
  2478. greater or lesser extent for ever and ever.  Should you feel willing
  2479. to contribute some material, the following is a list of topics which
  2480. ``urgently'' require treatment (some of which I may get around to
  2481. covering myself at some point):
  2482.  
  2483. - naming in distributed systems
  2484.  
  2485.